为什么在java中的System类中将PrintStream类引用声明为静态变量?

时间:2012-03-10 07:45:04

标签: java printstream

我可以使用PrintStream的{​​{1}}方法而不涉及println()类吗?

2 个答案:

答案 0 :(得分:5)

绝对 - System.outSystem.err只是与标准输出和标准错误相关联的PrintStream值。

您可以从任何PrintStream创建OutputStream,或者只提供文件名。但是,它将始终使用系统默认编码。

首选PrintWriter,它将包含任意Writer。但是,这将仍然压制IOException被抛出,这对我来说似乎不是一个好主意。

首选BufferedWriter

BufferedWriter wrapper = new BufferedWriter(writer);
try {
    wrapper.write(...);
    wrapper.newLine();
} finally {
    wrapper.close();
}

答案 1 :(得分:1)

System类不“引用PrintStream类”。它有两个类型为PrintStream的静态字段:outerr。因此,如果您要写入流出,请使用System.out。如果要写入错误流,请使用System.err。如果要写入另一个PrintStream,可以自己构建一个:new PrintStream(...)