为什么需要PrintWriter?

时间:2011-04-23 18:12:43

标签: java io printwriter

我对各种io类的目的感到困惑,例如,如果我们有BufferedWriter,为什么我们需要一个PrintWriter?

BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;      
while(s=br.readline()!=null) {
      PrintWriter fs = new PrintWriter(new FileWriter(file));
      fs.println(s);
}

如果BufferedWriter无法帮助?我只是不明白这些io课程之间的区别,有人可以解释一下吗?

3 个答案:

答案 0 :(得分:7)

他们彼此无关。事实上,除了暂时转换PrintWriter之外,我很少使用System.out。但无论如何。

BufferedWriter,与BufferedReader / BufferedInputStream / BufferedOutputStream一样,仅使用内存缓冲区(您可以指定大小)来装饰随附的Writer或接受默认。当写入基于网络或文件的慢速写入器时,这非常有用。 (例如,Stuff在内存中提交,偶尔会在磁盘上提交)通过在内存中缓冲,速度会大大提高 - 尝试编写只写FileWriter的10 mb文件的代码,然后与{ {1}}缠绕着它。

那就是BufferedWriter。它引入了一些方便的方法,但主要是它只提供了这个内存缓冲区。

BufferedWriter主要是一个简单的装饰器,为PrintWriterString等各种类型添加一些特定的写入方法,因此您不必将所有内容转换为原始字节。

编辑:

This已经出现

答案 1 :(得分:4)

PrintWriter本质上是一个便利类。如果你想快速轻松地将一行文字发布到例如一个日志文件,PrintWriter使它非常容易。

三个特点:

  • printprintln方法将采用任何数据类型并为您进行转换。不只是String
  • 相对较新的format方法在黄金方面非常重要。现在,它在Java中与在C中一样简单,可以输出带有C风格格式控制的文本行。
  • 这些方法永远不会抛出异常!一些程序员对于从未听说过出错的可能性感到震惊。但如果它是一次性计划或做一些非常简单的事情,那么便利性可能会很好。特别是如果输出到System.outSystem.err,那么几乎没有出错的方法。

答案 2 :(得分:1)

使用PrintWriter的主要原因是可以访问printXXX方法(如println(int))。您实际上可以使用PrintWriter写入文件,就像使用System.out写入控制台一样。

BufferedWriter是一种写入文件(或其他任何东西)的有效方法,因为它会在写入文件之前缓冲Java内存中的字符。