PrintWriter vs FileWriter in Java

2022-09-01 02:05:07

Java中的PrintWriter和FileWriter是否相同,无论使用哪一个?到目前为止,我已经使用了两者,因为它们的结果是相同的。有没有一些特殊情况,在这些情况下,偏爱一个而不是另一个是有意义的?

public static void main(String[] args) {

    File fpw = new File("printwriter.txt");
    File fwp = new File("filewriter.txt");
    try {
        PrintWriter pw = new PrintWriter(fpw);
        FileWriter fw = new FileWriter(fwp);
        pw.write("printwriter text\r\n");
        fw.write("filewriter text\r\n");
        pw.close();
        fw.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

答案 1

根据 coderanch.com,如果我们把答案结合起来,我们得到:

FileWriter 是 IO 的字符表示形式。这意味着它可以用来写字符。在内部,FileWriter 将使用基础操作系统的默认字符集,并将字符转换为字节并将其写入磁盘。

PrintWriter & FileWriter。

相似 之 处

  1. 两者都从作家延伸。
  2. 两者都是字符表示类,这意味着它们使用字符并使用默认字符集将它们转换为字节。

差异

  1. FileWriter 在任何 IO 失败时都会引发 IOException,这是一个已检查的异常。
  2. 没有一个 PrintWriter 方法抛出 IOExceptions,而是设置一个布尔标志,可以使用 checkError() 获取该标志。
  3. PrintWriter 有一个可选的构造函数,可用于在调用特定方法时启用自动刷新。文件编写器中不存在此类选项。
  4. 写入文件时,FileWriter 具有可选构造函数,该构造函数允许在调用 “write()” 方法时追加到现有文件。

PrintStream和TransputStream之间的区别:与上面的解释类似,只需将字符替换为byte即可。

PrintWriter有以下方法:

close()
flush()
format()
printf()
print()
println()
write()

和构造函数是:

File (as of Java 5)
String (as of Java 5)
OutputStream
Writer

而文件编写器具有以下方法:

close()
flush()
write()

和构造函数是:

File
String 

友情链接: http://www.coderanch.com/t/418148/java-programmer-SCJP/certification/Information-PrintWriter-FileWriter


答案 2

这两者都在内部使用:FileOutputStream

public PrintWriter(File file) throws FileNotFoundException {
this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))),
     false);
}



public FileWriter(File file) throws IOException {
super(new FileOutputStream(file));
}

但主要区别在于PrintWriter提供了特殊方法:

将对象的格式化表示形式打印到文本输出流中。此类实现在 PrintStream 中找到的所有打印方法。它不包含用于写入原始字节的方法,程序应使用未编码的字节流。

与 PrintStream 类不同,如果启用了自动刷新,则仅当调用其中一个 println、printf 或 format 方法时,才会执行此操作,而不是在恰好输出换行符时执行。这些方法使用平台自己的换行符概念,而不是换行符。


推荐