Java 中的 PrintWriter 给出意外行为

发布于 2024-12-08 13:32:23 字数 326 浏览 0 评论 0原文

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

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

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

// the output is java using pw.println but output is null using pw.print i.e nothing gets printed on console while using print.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

未蓝澄海的烟 2024-12-15 13:32:24

几乎可以肯定,这只是缓冲 - 由于您没有刷新它,因此您永远不会得到输出。来自文档

与 PrintStream 类不同,如果启用了自动刷新,则仅当调用 println、printf 或 format 方法之一时才会执行自动刷新,而不是在恰好输出换行符时执行。这些方法使用平台自己的行分隔符概念,而不是换行符。

尝试:

pw.flush();

在代码末尾。

It's almost certainly just buffering - and as you're not flushing it, you never get the output. From the docs:

Unlike the PrintStream class, if automatic flushing is enabled it will be done only when one of the println, printf, or format methods is invoked, rather than whenever a newline character happens to be output. These methods use the platform's own notion of line separator rather than the newline character.

Try:

pw.flush();

at the end of the code.

后知后觉 2024-12-15 13:32:24

对于自动刷新,您可以使用此构造函数

PrintWriter(OutputStream out, boolean autoFlush);

For automatic flushing, you could use this constructor

PrintWriter(OutputStream out, boolean autoFlush);
捶死心动 2024-12-15 13:32:24

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

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

A call to println() implicitly flushes the output buffer whereas a call to print() does not. Try using print() and then call pw.flush().

Note also that there are constructors of PrintWriter which include an option to automatically flush after any write call.

荒路情人 2024-12-15 13:32:23

试试这个:

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

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

Try this instead :

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

The PrintWriter is going to be doing internal buffering, and the println method is automatically flushing it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文