Java中的PrintWriter与FileWriter

| 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();
    }

}
    
已邀请:
根据coderanch.com的说法,如果我们将这些答案结合在一起,将会得到: FileWriter是IO的字符表示。这意味着它可以用来写字符。在内部,FileWriter将使用基础操作系统的默认字符集,并将字符转换为字节,然后将其写入磁盘。 PrintWriter和FileWriter。 相似点 两者都从Writer扩展。 两者都是字符表示类,这意味着它们可以处理字符,并使用默认字符集将其转换为字节。 差异性 如果发生任何IO故障,FileWriter会引发IOException,这是一个已检查的异常。 没有一个PrintWriter方法抛出IOExceptions,而是设置了一个布尔标志,可以使用checkError()获得该标志。 PrintWriter有一个可选的构造函数,您可以在调用特定方法时使用它来启用自动刷新。 FileWriter中不存在此类选项。 写入文件时,FileWriter具有一个可选的构造函数,该构造函数允许在调用\“ write()\”方法时将其追加到现有文件中。 PrintStream和OutputStream之间的区别:与上面的解释类似,只是将字符替换为字节。 PrintWriter具有以下方法:
close()
flush()
format()
printf()
print()
println()
write()
和构造函数是:
File (as of Java 5)
String (as of Java 5)
OutputStream
Writer
而FileWriter具有以下方法:
close()
flush()
write()
和构造函数是:
File
String 
链接:http://www.coderanch.com/t/418148/java-programmer-SCJP/certification/Information-PrintWriter-FileWriter     
两者在内部都使用
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方法,   而不是每当换行符   字符正好输出。这些   方法使用平台自己的概念   行分隔符而不是   换行符。     
PrintWriter
具有错误处理的不同概念。您需要调用ѭ8而不是使用try / catch块。     
PrintWriter
不会抛出
IOException
。为此,您应调用
checkError()
方法。     
Java5 +中的ѭ12允许使用一种方便的方法/构造器来写入文件。 来自Javadoc; 使用指定的文件创建一个新的PrintWriter,而无需自动行刷新。这个便利的构造函数创建必要的中间OutputStreamWriter,它将使用Java虚拟机实例的默认字符集对字符进行编码。     
只是为了提供与FLUSH相关的更多信息,以及与FileOutputStream相关的Close方法。 flush()---只是确保将所有缓冲数据完全刷新到磁盘上,并准备在以后再次写入流(或写入器)。 close()----清除数据并关闭所有文件句柄,套接字或其他内容。现在连接已丢失,您无法向outputStream写入任何内容。     
java.io.FileWriter依赖于平台的默认字符编码这一事实使它对我来说毫无用处。您永远不要对应用程序将部署的环境有所了解。     

要回复问题请先登录注册