为什么此代码不起作用,除非我取消注释System.out.print(" ");
行?
3例:
System.out.print(" ");
导致outprint.write(var);
之后h e l l o w o r l
在System.out.print(" ");
之前outprint.write(var);
导致:h e l l o w o r l d
System.out.print(" ");
没有显示任何内容总而言之,我确实将System.out
实例(PrintStream
)传递给out
对象的FilterOutputStream
属性(需要{{1} }})。
OutputStream
答案 0 :(得分:7)
这是因为你必须手动调用outputstream.flush();
(而不是System.out.print()
)
答案 1 :(得分:3)
无论你添加到流中的是什么都被缓冲但没有被刷新。如果没有该行,请尝试刷新输出流。
try {
for (char var : lst_char) {
outputstream.write(var);
}
outputstream.flush(); //flush it once you are done writing
} catch (IOException e) {
e.printStackTrace();
}
答案 2 :(得分:0)
以下是为您更正的代码。使用flush()
public class CodeCesar {
FilterOutputStream outputstream = new FilterOutputStream(System.out);
String line = "hello world";
char[] lst_char = line.toCharArray();
for (char var : lst_char) {
try {
System.out.print(" ");
outputstream.write(var);
outputstream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}