Java中的PrintWriter与FileWriter
Java中的PrintWriter和FileWriter是相同的吗?不管使用哪一个?到目前为止,我已经使用了这两种方法,因为它们的结果是相同的。在某些特殊情况下,选择其中一个比另一个更有意义吗Java中的PrintWriter与FileWriter,java,filewriter,printwriter,Java,Filewriter,Printwriter,Java中的PrintWriter和FileWriter是相同的吗?不管使用哪一个?到目前为止,我已经使用了这两种方法,因为它们的结果是相同的。在某些特殊情况下,选择其中一个比另一个更有意义吗 public static void main(String[] args) { File fpw = new File("printwriter.txt"); File fwp = new File("filewriter.txt"); try { PrintW
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();
}
}
两者都在内部使用
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
具有不同的错误处理概念。您需要调用checkError()
而不是使用try/catch块。PrintWriter
不会抛出IOException
。为此,您应该调用checkError()
方法。Java5+中的java.io.PrintWriter
允许一个方便的方法/构造函数写入文件。
来自Javadoc强>
使用指定的文件创建新的PrintWriter,无需自动换行。这个方便的构造函数创建了必要的中间OutputStreamWriter,它将使用Java虚拟机实例的默认字符集对字符进行编码 根据coderanch.com,如果我们将这些答案结合起来,我们会得到: FileWriter是IO的字符表示形式。这意味着它可以用来写字符。在内部,FileWriter将使用底层操作系统的默认字符集,并将字符转换为字节,然后将其写入磁盘 PrintWriter和FileWriter 相似性
close()
flush()
format()
printf()
print()
println()
write()
close()
flush()
write()
施工人员包括:
File (as of Java 5)
String (as of Java 5)
OutputStream
Writer
File
String
而FileWriter具有以下方法:
close()
flush()
format()
printf()
print()
println()
write()
close()
flush()
write()
施工人员包括:
File (as of Java 5)
String (as of Java 5)
OutputStream
Writer
File
String
链接:仅提供有关刷新和关闭FileOutputStream的方法的更多信息 flush()---只需确保所有缓冲数据都被完全刷新写入磁盘,并准备好之后再次写入流(或写入器)
close()----刷新数据并关闭任何文件句柄、套接字或任何东西。现在连接已丢失,您无法将任何内容写入outputStream。事实上,java.io.FileWriter依赖于平台的默认字符编码,这对我来说毫无用处。你永远不应该假设你的应用程序将部署在什么样的环境中。好吧,他们有不同的方法,做不同的事情。你读过每一本的javadoc吗?只要记住在关闭()之前刷新()。关闭可以确保刷新。@Bozho:老实说,我以为Koekiebox在制造微妙的浴室幽默。这里总是欢迎严肃的geekery…但偶尔听到这么多评论就咯咯笑是很好的。:)一个质量很差的回答。”FileWriter是I/O的字符表示形式,没有意义。所有作家都写人物。FileWriter写入文件。PrintWriter写入嵌套写入程序,该写入程序可以是文件写入程序。我当前有一个PrintWriter抛出IOException。PrintWriter仅在您写入文件时使用FileOutputStream。@EJP我从未说过其他。但这个问题是在编写文件的背景下提出的