1

我正在查看一个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 是 type OutputStream

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

4

3 回答 3

4

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

在轮询回复之前是否有任何幕后同步OutputStream,或者我是否应该始终调用flush?InputStream

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

于 2012-12-03T15:51:28.173 回答
1

除了在 中明显缺少print...()方法外OutputStream,PrintStream 还抑制IOException并设置了一个错误标志。

于 2012-12-03T16:03:43.167 回答
1

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

于 2012-12-03T16:02:36.363 回答