我对各种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课程之间的区别,有人可以解释一下吗?
答案 0 :(得分:7)
他们彼此无关。事实上,除了暂时转换PrintWriter
之外,我很少使用System.out
。但无论如何。
BufferedWriter
,与BufferedReader
/ BufferedInputStream
/ BufferedOutputStream
一样,仅使用内存缓冲区(您可以指定大小)来装饰随附的Writer
或接受默认。当写入基于网络或文件的慢速写入器时,这非常有用。 (例如,Stuff在内存中提交,偶尔会在磁盘上提交)通过在内存中缓冲,速度会大大提高 - 尝试编写只写FileWriter
的10 mb文件的代码,然后与{ {1}}缠绕着它。
那就是BufferedWriter
。它引入了一些方便的方法,但主要是它只提供了这个内存缓冲区。
BufferedWriter
主要是一个简单的装饰器,为PrintWriter
,String
等各种类型添加一些特定的写入方法,因此您不必将所有内容转换为原始字节。
编辑:
This已经出现
答案 1 :(得分:4)
PrintWriter
本质上是一个便利类。如果你想快速轻松地将一行文字发布到例如一个日志文件,PrintWriter使它非常容易。
三个特点:
print
和println
方法将采用任何数据类型并为您进行转换。不只是String
。format
方法在黄金方面非常重要。现在,它在Java中与在C中一样简单,可以输出带有C风格格式控制的文本行。System.out
或System.err
,那么几乎没有出错的方法。答案 2 :(得分:1)
使用PrintWriter的主要原因是可以访问printXXX方法(如println(int))。您实际上可以使用PrintWriter写入文件,就像使用System.out写入控制台一样。
BufferedWriter是一种写入文件(或其他任何东西)的有效方法,因为它会在写入文件之前缓冲Java内存中的字符。