2
import java.io.*;
class demo
{
public static void main(String args[])
{
    PrintWriter pw=new PrintWriter(System.out);
    pw.println("java");
    //pw.print("java");
}
}

// 输出正在java使用pw.println,但使用时输出为空,pw.print即使用时不会在控制台上打印任何内容print

4

4 回答 4

6

它几乎可以肯定只是缓冲 - 因为你没有刷新它,所以你永远不会得到输出。从文档

与 PrintStream 类不同,如果启用了自动刷新,它将仅在调用 println、printf 或 format 方法之一时完成,而不是在碰巧输出换行符时完成。这些方法使用平台自己的行分隔符概念,而不是换行符。

尝试:

pw.flush();

在代码的末尾。

于 2011-10-05T13:23:34.843 回答
6

试试这个:

PrintWriter pw=new PrintWriter(System.out);
pw.print("java");
pw.flush();

PrintWriter进行内部缓冲,并且该println方法会自动刷新它。

于 2011-10-05T13:23:40.650 回答
1

对于自动冲洗,您可以使用此构造函数

PrintWriter(OutputStream out, boolean autoFlush);
于 2011-10-05T13:24:44.990 回答
0

调用println()隐式刷新输出缓冲区,而调用print()不会。尝试使用print(),然后调用pw.flush().

另请注意,PrintWriter 的构造函数包括在任何写入调用后自动刷新的选项。

于 2011-10-05T13:24:41.317 回答