有没有办法在调用PrintWriter
方法后立即打印OutputStreamWriter
或.write
?我为autoFlush
启用了PrintWriter
。然而,对于这两个类,只有在作者关闭时才会打印内容。
对于它的价值,我使用的是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
*/
答案 0 :(得分:5)
autoFlush
构造函数参数的文档说:
布尔值;如果为true,则println,printf或format方法将刷新输出缓冲区
鉴于你没有使用任何这些方法,它并没有完全令人惊讶,它没有帮助。
最简单的方法是在每write
之后手动调用flush()
- 这毕竟是你想要实现的目标。我不知道在每次写入后都会使写入器默认刷新。
当然,您可以编写自己的包装类 - 相当于BufferedWriter
,但效果相反。它可以将所有方法委托给包装的编写器,但之后立即调用flush()
。