gpt4 book ai didi

java - 是否需要刷新 PrintWriter/PrintStream?

转载 作者:行者123 更新时间:2023-11-30 09:36:48 28 4
gpt4 key购买 nike

我想使用 PrintWriter 或 PrintStream 将格式化字符串写入输出流(我无法控制其创建)。然而,刷新底层 OutputStream 会对性能造成很大影响。

是否需要刷新 PrintWriter/PrintStream。

如果我需要刷新 PrintStream/PrintWriter;我可以在不刷新底层 OutputStream 的情况下这样做吗,或者我是否需要创建一个“刷新保护器”OutputStream 来包装底层流?

为了更清楚地了解这一点,我想实现

 public void writeSomeString(OutputStream foo);

但是对于同一个OutputStream(foo)这个方法可能会被调用很多次。每个调用都必须构造自己的 PrintWriter。我知道这样做很难看,但我无法控制界面或 foo 的创建。

我试图避免每个方法都必须刷新 foo 才能刷新它自己的 PrintWriter/PrintStream。

所以我想:

public void writeSomeString(OutputStream foo) {
PrintStream s = new PrintStream(foo);
s.println("bar");
// other code
}

我想完全避免这种方法刷新 foo

最佳答案

PrintWriter 需要在以下情况下刷新:

ServerSocket s = new ServerSocket(4444);

Socket incoming = s.accept();

OutputStream output = s.getOutputStream();

PrintWriter pw = new PrintWriter(output,true);

System.out.println(pw.write(new Scanner(System.in).nextLine()));

PrintWriter 构造函数中的第二个参数是 flush,它接受 boolean 数据类型,我们需要刷新数据,因此即使缓冲区未满,它也会在控制台上抛出。

关于java - 是否需要刷新 PrintWriter/PrintStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10640360/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com