嗨我对用于在文本文件中写入的流有点混淆
我见过一些例子:
使用PrintWriter流
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(fname)));
out.println(/*something to write*/);
out.close();
而不是使用:
PrintStream out = new PrintStream(new FileOutputStream(fname));
out.println(/*something to write*/)
但是哪个区别?两个文件都写在同一个文件中?
答案 0 :(得分:1)
PrintWriter
用于写入文本,而PrintStream
用于写入数据 - 原始字节。 PrintWriter
可能会更改字节的编码,以便更轻松地处理文本,因此可能会损坏您的数据。
答案 1 :(得分:1)
PrintWriter
是Java 1.1的新增内容;它比PrintStream
类更有能力。您应该使用PrintWriter
而不是PrintStream
,因为它使用默认编码方案将字符转换为基础OutputStream
的字节。 Java 1.1中不推荐使用PrintStream
的构造函数。实际上,整个类可能会被弃用,除非它会为使用System.out
和System.err
的代码生成大量编译警告。
答案 2 :(得分:0)
PrintWriter
扩展了类Writer
,一个被认为是写字符的类,而PrintStream
实现了OutputStream
,这是一个更通用输出的接口。