我可以在不涉及System
类的情况下使用PrintStream
的println()
方法吗?
绝对-System.out
和System.err
只是与标准输出和标准误差相关的PrintStream
值。
您可以从任何OutputStream
创建一个PrintStream
,也可以只提供一个文件名。但是,它将始终使用系统默认编码。
首选PrintWriter
,它将封装任意的Writer
。然而,这将仍然抑制IOException
被抛出,这对我来说似乎不是一个好主意
首选BufferedWriter
:
BufferedWriter wrapper = new BufferedWriter(writer);
try {
wrapper.write(...);
wrapper.newLine();
} finally {
wrapper.close();
}
System类不"引用PrintStream类"。它有两个类型为PrintStream的静态字段:out
和err
。因此,如果您想写入输出流,可以使用System.out
。如果要写入错误流,请使用System.err
。如果您想写入另一个PrintStream,您可以自己构造一个:new PrintStream(...)
。