无意义地使用PrintStream?

时间:2012-12-03 15:50:06

标签: java

我正在查看一个通过其构造函数获取OutputStream对象的类,并使用它来创建PrintStream对象,如下所示:

this.pout = new PrintStream(out);

然后,这个类在类实现的许多地方以下列方式使用pout对象:

String string;
...
pout.print(string);
pout.flush();

我是否正确地说,在这里使用PrintStream是没有意义的,而且这可以做同样的工作:

this.out = out
...
out.print(string);
out.flush();

其中out的类型为OutputStream

另外,我正在使用此类在ssh2连接上写出命令。然后我使用实现InputStream的类来回读响应。在OutputStreamInputStream之间是否有任何幕后同步,或者我应该在轮询回复之前始终调用flush?

3 个答案:

答案 0 :(得分:4)

第二个代码段无效。 OutputStream没有print()方法。

  

OutputStreamInputStream之间是否有幕后同步,还是在轮询回复之前我是否应该总是调用flush?

这取决于您正在使用的实际流类的机制。如有疑问,请使用flush()

答案 1 :(得分:1)

print()调用write()但隐藏可能发生的任何IOException。这通常比有用更危险,除非您正在写入永远不会失败的设备,或者只有在用户控制的设备中才会失败。 System.out和System.err是PrintStream,程序的调用者可以在程序运行时关闭它们。

答案 2 :(得分:1)

print...()中明显缺少OutputStream方法外,PrintStream还会抑制IOException并设置错误标记。

相关问题