为什么建议将 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 可能只在循环结束时写入一次,具体取决于缓冲区大小。