FileWrite BufferedWriter和PrintWriter结合


问题内容

好的,所以我正在学习I /
O,并且在其中一张幻灯片中找到了以下代码。有人可以解释一下为什么需要FileWrite,BufferedWriter和PrintWriter吗?我知道BufferedWriter将缓冲输出并将其全部放入,但是为什么他们要使用FileWriter和PrintWriter?他们在错误处理等方面做得差不多吗?

而且为什么他们传递bwPrintWriter

      FileWriter fw = new FileWriter (file);
      BufferedWriter bw = new BufferedWriter (fw);
      PrintWriter outFile = new PrintWriter (bw);

问题答案:

大概他们之所以使用a是FileWriter因为他们想写入文件。双方BufferedWriterPrintWriter必须得到另一位作家写-
你需要 一些 最终目的地。

(我个人不喜欢,FileWriter因为它不允许您指定编码。我更喜欢使用FileOutputStream包裹在中OutputStreamWriter,但这是另一回事。)

BufferedWriter如您所说,它用于缓冲-尽管它不缓冲 所有 输出,但只是固定数量的输出(缓冲的大小)。它会向底层作者创建“
chunkier”写入。

至于-
well的用法PrintWriter,它公开了一些额外的方法,例如println。我个人不喜欢它,因为它会吞下异常(您必须使用进行显式检查checkError,但仍然无法提供详细信息,而且我认为我
从未 见过使用过它),但这又取决于您在做什么。该PrintWriter传递的BufferedWriter它的 目的地。

因此,您所显示的部分下面的代码可能PrintWriter会写入,将写入BufferedWriter,将(在其缓冲区已满,或者刷新或关闭时)写入FileWriter,进而将字符数据转换为磁盘上的字节。