考虑以下代码 -
import java.io.*;
public class test
{
public static void main(String[] args)
{
PrintWriter out= new PrintWriter(System.out);
out.println(1);
out.close();
}
}
我第一次在bluej上运行它并在控制台上获得输出1。在再次运行它时,我根本没有输出,任何后续尝试都是如此。 很想知道为什么会这样。
答案 0 :(得分:0)
好的,这个方法只运行一次的问题是PrintWriter.close()
方法也会关闭父Stream,在这种情况下System.out
。
因此,当您下次调用此方法时,System.out
将被关闭,并且不会打印任何内容。
所以解决方案不是关闭PrintWriter
但在这种情况下,不会打印任何内容,因为PrintWriter
的输出不会被刷新。要做到这一点,您必须自己调用out.flush()
或使用能够在行结束时自动刷新的构造函数。
要么使用它:
import java.io.*;
public class test
{
public static void main(String[] args)
{
PrintWriter out= new PrintWriter(System.out);
out.println(1);
out.flush();
}
}
或者这个:
import java.io.*;
public class test
{
public static void main(String[] args)
{
PrintWriter out= new PrintWriter(System.out, true);
out.println(1);
}
}