在Java中何时/为什么要调用System.out.flush()? System.out.flush()方法用于刷新标准输出流。标准输出流是Java程序默认的输出目的地,它通常与控制台相关联。 通常情况下,标准输出流在以下情况下会自动刷新: 1. 当程序遇到换行符(\n)时。 2. 当输出缓冲区已满时。 3. 当调用System.exit()方法时。 然而,在某些情况下,您可能需要手动调用System.out.flush()来刷新标准输出流。以下是一些可能的情况: 1. 当您需要确保输出立即可见时,而不是等待自动刷新。例如,在输出进度或调试信息时,您可能希望立即将文本打印到控制台上。 2. 当程序需要与其他进程或设备进行通信时,您可能需要手动刷新输出流,以确保输出立即发送给目标进程或设备。 总之,System.out.flush()方法用于手动刷新标准输出流。在特定情况下,当您需要确保输出立即可见或与其他进程进行通信时,可能需要调用该方法。

13 浏览
0 Comments

在Java中何时/为什么要调用System.out.flush()? System.out.flush()方法用于刷新标准输出流。标准输出流是Java程序默认的输出目的地,它通常与控制台相关联。 通常情况下,标准输出流在以下情况下会自动刷新: 1. 当程序遇到换行符(\n)时。 2. 当输出缓冲区已满时。 3. 当调用System.exit()方法时。 然而,在某些情况下,您可能需要手动调用System.out.flush()来刷新标准输出流。以下是一些可能的情况: 1. 当您需要确保输出立即可见时,而不是等待自动刷新。例如,在输出进度或调试信息时,您可能希望立即将文本打印到控制台上。 2. 当程序需要与其他进程或设备进行通信时,您可能需要手动刷新输出流,以确保输出立即发送给目标进程或设备。 总之,System.out.flush()方法用于手动刷新标准输出流。在特定情况下,当您需要确保输出立即可见或与其他进程进行通信时,可能需要调用该方法。

为什么某些流(如FileOutputStream和Socket的流)需要刷新,而标准输出流不需要?

每当有人使用System.out PrintStream对象时,无论是调用println()还是write(),他们从不刷新该流。然而,其他程序员习惯于在使用其他流时调用PrintStream/PrintWriter的flush()方法。

我最近向几位程序员提出了这个问题,有些人认为Java中有一些后台处理机制可以自动刷新System.out流,但我找不到任何关于这方面的文档。

这让我想知道,仅仅调用System.out.println()是否是平台无关的,因为某些系统可能需要你手动刷新流。

0