i2i*_*eya 90 java file stream filereader bufferedreader
请查看下面的代码:
// 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);
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么区别?
什么时候应该在BufferedWriter上使用PrintWriter?
Jon*_*eet 84
PrintWriter给出了更多的方法(println),但要注意的最重要的(也是令人担忧的)差异是吞下异常.
您可以checkError稍后调用以查看是否发生了任何错误,但通常您可以使用PrintWriter诸如写入控制台之类的内容 - 或者在"快速'脏"应用程序中,您不希望被异常所困扰(以及长期可靠性不是问题).
我不确定为什么"额外的格式化能力"和"不要吞下异常"方面被捆绑到同一个类中 - 格式化显然在许多你不希望被吞下的地方很有用.很高兴看到BufferedWriter在某些时候获得相同的能力......
Tof*_*eer 56
BufferedWriter和PrintWriter的API参考详细说明了这些差异.
使用PrintWriter的主要原因是可以访问printXn()等printXXX方法.实际上,您可以使用PrintWriter写入文件,就像使用System.out写入控制台一样.
BufferedWriter是一种写入文件(或其他任何东西)的有效方法,因为它将缓冲Java内存中的字符(可能,取决于实现),放到C来写入文件.
没有"PrintReader"这样的概念; 你得到的最接近的可能是java.util.Scanner.
正如在TofuBeer所说,答案都有他们的专长.要充分利用PrintWriter(或任何其他编写器)但也使用缓冲写入,您可以将BufferedWriter包装为所需的一个,如下所示:
PrintWriter writer = new PrintWriter(
new BufferedWriter (
new FileWriter("somFile.txt")));
Run Code Online (Sandbox Code Playgroud)
小智 7
PrintWriter只是在字符模式下公开任何Writer上的打印方法.
根据缓冲方法,BufferedWriter比效率更高.它附带了一个newLine()方法,根据您的系统平台,可以正确地操作文本文件.
BufferedReader允许从文件中读取文本,字节以字符转换.它允许逐行读取.
没有PrintReader,您必须根据输入的格式选择另一个Reader实现.