为什么建议将 BufferedWriter 包装在任何其 write() 操作可能代价高昂的 Writer 周围,例如 FileWriters 和 OutputStreamWriters?
Why it is advisable to wrap a BufferedWriter around any Writer whose write() operations may be costly, such as FileWriters and OutputStreamWriters?
我的问题是,是否直接使用,如下图;
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
可能只在循环结束时写入一次,具体取决于缓冲区大小。
我的问题是,是否直接使用,如下图;
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
可能只在循环结束时写入一次,具体取决于缓冲区大小。