gpt4 book ai didi

java - 使 PrintWriter 或 OutputStreamWriter 立即打印

转载 作者:行者123 更新时间:2023-11-29 08:03:07 24 4
gpt4 key购买 nike

有没有办法让 PrintWriterOutputStreamWriter 在调用 .write 方法后立即打印?我为 PrintWriter 打开了 autoFlush。然而,对于这两个类,内容仅在 writer 关闭时才会打印。

就其值(value)而言,我正在使用 Writer,因为我需要对控制台输出、文件输出和字符串输出进行抽象。

谢谢!

编辑:

SSCCE这表明了问题:

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
PrintWriter p = new PrintWriter(System.out, true);
Scanner read = new Scanner(System.in);
while (read.hasNextLine()) {
String input = read.nextLine();
if (input.equals("end"))
break;
p.write(input);
}
p.close();
}
}

/* Sample run: (first four lines are input)
cow
mow
pow
end
cowmowpow
*/

最佳答案

autoFlush 构造函数参数的文档说:

A boolean; if true, the println, printf, or format methods will flush the output buffer

鉴于您没有使用这些方法中的任何一种,它没有帮助也就不足为奇了。

最简单的方法就是调用 flush()在每次 write 之后手动 - 毕竟这就是您想要实现的目标。我不知道有什么东西会在每次写入后默认让写入器刷新。

当然,您可以编写自己的包装类 - 相当于 BufferedWriter,但效果相反。它可以将所有方法委托(delegate)给包装的编写器,然后立即调用 flush()

关于java - 使 PrintWriter 或 OutputStreamWriter 立即打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13172361/

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