2

嗨,我对用于写入文本文件的流有点困惑

我看过一些例子:

一种使用 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*/)

但有什么区别?两者都写入一个结果相同的文件?

4

3 回答 3

1

PrintWriter用于写入文本,而PrintStream用于写入数据 - 原始字节。PrintWriter可能会更改字节的编码以使处理文本更容易,因此它可能会损坏您的数据。

于 2011-12-11T19:34:22.647 回答
1

PrintWriter从 Java 1.1 开始是新的;它比PrintStream班级更有能力。您应该使用PrintWriter而不是,PrintStream因为它使用默认编码方案将字符转换为底层OutputStream. 的构造函数PrintStream在 Java 1.1 中已弃用。事实上,整个类可能已经被弃用,除了它会为使用System.out和的代码生成大量编译警告System.err

于 2011-12-11T20:09:40.923 回答
0

PrintWriter扩展了 class Writer,一个被认为可以写字符的类,而PrintStreamimplements OutputStream,一个用于更通用输出的接口。

于 2011-12-11T19:33:35.290 回答