java.io.PrintWriter和java.io.BufferedWriter之间的区别?

请看下面的代码:

// A.class File file = new File("blah.txt"); FileWriter fileWriter = new FileWriter(file); PrintWriter printWriter = new PrintWriter(fileWriter); // B.class File file = new File("blah.txt"); FileWriter fileWriter = new FileWriter(file); BufferedWriter bWriter = new BufferedWriter(fileWriter); 

这两种方法有什么区别?

什么时候应该使用BufferedWriter上的PrintWriter?

http://java.sun.com/javase/6/docs/api/java/io/BufferedWriter.html和http://java.sun.com/javase/6/docs/api/java/io/PrintWriter。; HTML细节的差异。

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

BufferedWriter是写入文件(或其他任何东西)的有效方法,因为它会cachingJava内存中的字符(可能取决于具体实现),然后放到C中来写入文件。

没有像“PrintReader”这样的概念最接近你可能是java.util.Scanner。

PrintWriter给出了更多的方法( println ),但是最重要的(和令人担忧的)区别是它吞噬了exception

稍后您可以调用checkError来查看是否发生了任何错误,但是通常情况下,您可以使用PrintWriter来写入控制台,或者在“快速”“肮脏”的应用程序中,您不希望被exception打扰并且长期可靠性不是问题)。

我不确定为什么“额外的格式化能力”和“不吞下例外”方面被捆绑到同一类中 – 格式化在许多地方显然是有用的,在这些地方你希望例外被吞噬。 很高兴看到BufferedWriter在某个时候获得了相同的能力。

正如TofuBeer所说的答案都有其特色。 为了充分利用PrintWriter(或任何其他作者)的优势,还可以使用缓冲写入function,可以使用所需的BufferedWriter包装:

 PrintWriter writer = new PrintWriter( new BufferedWriter ( new FileWriter("somFile.txt"))); 

PrintWriter仅以字符模式暴露任何Writer上的打印方法。

根据缓冲方法,BufferedWriter比效率更高。 它带有一个newLine()方法,根据您的系统平台,正确操作文本文件。

BufferedReader允许从文件中读取文本,并以字符转换字节。 它允许逐行阅读。

没有PrintReader,您必须根据input的格式select另一个Reader实现。

通常,Writer将其输出立即发送到底层字符或字节stream。 除非需要提示输出,否则build议在Write()操作可能代价高昂的Writer(如FileWriters和OutputStreamWriters)周围包装BufferedWriter。 例如,

注意:代码块中的文本内容是自动换行的

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));

将缓冲PrintWriter的输出到文件。 如果不进行缓冲,每次调用print()方法都会导致字符被转换为字节,然后立即将其写入文件,效率可能非常低。

BufferedWriter – 将文本写入输出字符stream,缓冲字符stream中的字符。 PrintWriter – 将对象的格式化表示forms打印到文本输出stream。

我认为使用PrintWriter的原因已经在上面提到,但其中一个重要的原因是你直接将一个文件对象传递给PrintWriter构造函数,这使得它易于使用。

 File file=new File(“newfile.txt”); PrintWriter pw=new PrintWriter(file);