gpt4 book ai didi

java - 为什么建议将 BufferedWriter 包裹在 write() 操作可能很昂贵的任何 Writer 周围,例如 FileWriters 和 OutputStreamWriters?

转载 作者:行者123 更新时间:2023-11-30 11:02:51 25 4
gpt4 key购买 nike

我的问题是,是否直接使用,如下图;

class Test{    
public static void main(String args[]){
try{
FileWriter fo =new FileWriter("somex.txt");
int arr[] = {9};
for(int i =0; i <arr.length; i++){
fo .write(arr[i]); // this is very costly.
}
fo.write(b);
fo.close();
System.out.println("....");
}catch(Exception e){system.out.println(e);}
}
}

编码更高效,如下所示;

class Test{     
public static void main(String args[])throws Exception{
BufferedWriter bfw= new BufferedWriter(new FileWriter("foo.out")));

int arr[] = {9};
for(int i =0; i <arr.length; i++){
bfw .write(arr[i]);
}

bfw.flush();
bfw.close();

System.out.println(".......");
}
}

没有区别,因为两者都会执行相同的写操作。谁能帮我理解其中的微妙之处?

最佳答案

BufferedWriter 会将内容存储在内存中,直到它达到其缓冲区大小,然后它会执行一次大写入,而不是每次直接为 FileWriter 写入。所以使用 FileWriter 循环的每次迭代都会有一个写入。 BufferedWriter 可能只在循环结束时写入一次,具体取决于缓冲区大小。

关于java - 为什么建议将 BufferedWriter 包裹在 write() 操作可能很昂贵的任何 Writer 周围,例如 FileWriters 和 OutputStreamWriters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30624453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com