请查看下面的代码:

// 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);

这两种方法有什么区别?

我们什么时候应该使用 PrintWriter 而不是 BufferedWriter?

有帮助吗?

解决方案

API 参考 缓冲写入器打印作家 详细说明差异。

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

BufferedWriter 是写入文件(或其他任何内容)的有效方法,因为它会在(可能取决于实现)下降到 C 写入文件之前缓冲 Java 内存中的字符。

不存在“PrintReader”这样的概念;你会得到的最接近的可能是 java.util.Scanner.

其他提示

PrintWriter提供了更多的方法(println),但是最重要的(和担心)差要注意的是,的它吞下例外

您可以稍后致电checkError,看看是否有错误发生,但通常你会使用PrintWriter的东西喜欢写控制台 - 或“快速“东经脏”的应用程序,你不想被人打扰你通过异常(和其中长期可靠性不是问题)。

我不知道为什么“额外格式的能力”和“请勿吞食例外”方面都捆绑到同一个类 - 格式化显然是有用的在你的很多地方没有的被吞噬想例外。这将是很好看BufferedWriter得到同样的能力,在某些时候...

作为TofuBeer的回答说都有自己的特色。采取充分利用的PrintWriter的(或任何其他写入器),但也可以使用缓冲的写入可以包裹与所需的一个像这样的BufferedWriter:

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

的PrintWriter刚刚暴露在任何编写器的打印方法在字符模式。

但是BufferedWriter比更有效的,根据它的缓冲方法。 它带有一个换行符()方法,根据您的系统平台,要正确处理文本文件。

在的BufferedReader允许读取来自文件的文本,并在字符转换字节。它允许逐行读取。

有没有PrintReader,你必须根据你输入的格式选择其他的阅读器实现。

PrintWriter 是最强的作家写的文字数据文件。

主要优势的PrintWriter过FileWriter和BufferedWriter是:

  1. PrintWriter可以直接沟通的文件,并且可以通过一些作家的对象。

PrintWriter printwriter = new PrintWriter("blah.txt");

(或者)

FileWriter filewriter = new FileWriter("blah.txt");
PrintWriter printwiter = new PrintWriter(filewriter);
  1. 我们可以写任何类型的原始数据直接的文件(因为我们有附加重载版本的PrintWriter方法即print()以及释放()).

    printwriter.print(65); //65
    bufferedwriter.write(65); //A
    printwriter.println(true); //true

在一般情况下,一个Writer立即将其输出发送到基础字符或字节流。除非要求提示输出,最好是环绕任何作家,写()操作可能是昂贵的,如FileWriters和OutputStreamWriters一个的BufferedWriter。例如,

注意:在码块文本内容是自动字包裹

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

将缓冲的PrintWriter的输出到该文件。如果没有缓冲,打印()方法的每一次调用会引起字符被转换为将被立即写入到文件的字节,它可以是非常低效的。

的BufferedWriter - 将文本写入一个输出字符流,从字符流缓冲各个字符。 为PrintWriter - 打印格式化对象的表示,以文本输出流。

我觉得用PrintWriter的背后的原因是已经提到的,但上面的一个重要原因是你的直接传递一个文件对象的PrintWriter的构造函数,可以很容易地使用它。

File file=new File(“newfile.txt”);
PrintWriter pw=new PrintWriter(file);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top