1

メソッドが呼び出された直後に作成PrintWriterまたは印刷する方法はありますか? をオンにしました。しかし、どちらのクラスでも、内容はライターが閉じられたときにのみ出力されます。OutputStreamWriter.writeautoFlushPrintWriter

価値があるのは、Writerコンソール出力、ファイル出力、および文字列出力を抽象化する必要があるため、 s を使用していることです。

ありがとう!

編集:

問題を示す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
*/
4

1 に答える 1

6

autoFlushコンストラクターパラメーターのドキュメントには、次のように記載されています。

ブール値。true の場合、println、printf、または format メソッドは出力バッファをフラッシュします

これらの方法のいずれも使用していないことを考えると、それが役に立たないことはまったく驚くべきことではありません.

flush()最も簡単なアプローチは、毎回手動で呼び出すwriteことです-それがあなたが達成しようとしていることです. 書き込みのたびにデフォルトでライターをフラッシュするものは何も知りません。

もちろん、独自のラッパー クラスを作成することもできます。これは と同等ですBufferedWriterが、逆の効果があります。すべてのメソッドをラップされたライターに委任できますが、その後すぐに呼び出しますflush()

于 2012-11-01T07:06:40.403 に答える