我正在查看一个通过其构造函数获取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
的类来回读响应。在OutputStream
和InputStream
之间是否有任何幕后同步,或者我应该在轮询回复之前始终调用flush?
答案 0 :(得分:4)
第二个代码段无效。 OutputStream
没有print()
方法。
在
OutputStream
和InputStream
之间是否有幕后同步,还是在轮询回复之前我是否应该总是调用flush?
这取决于您正在使用的实际流类的机制。如有疑问,请使用flush()
。
答案 1 :(得分:1)
print()调用write()但隐藏可能发生的任何IOException。这通常比有用更危险,除非您正在写入永远不会失败的设备,或者只有在用户控制的设备中才会失败。 System.out和System.err是PrintStream,程序的调用者可以在程序运行时关闭它们。
答案 2 :(得分:1)
除print...()
中明显缺少OutputStream
方法外,PrintStream还会抑制IOException
并设置错误标记。