立即打印PrintWriter或OutputStreamWriter

mis*_*tor 1 java io printwriter

调用方法后有没有办法立即制作PrintWriterOutputStreamWriter打印.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
*/
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

autoFlushconstructor参数的文档说:

布尔值; 如果为true,则println,printf或format方法将刷新输出缓冲区

鉴于你没有使用任何这些方法,它并没有完全令人惊讶,它没有帮助.

最简单的方法是flush()在每次之后手动调用write- 毕竟这是你想要实现的目标.我不知道在每次写入后都会使编写器默认刷新.

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