5

system.out.flush()より簡単な方法で使用する理由を誰か説明してもらえますか? データが失われる可能性がある場合は、例を教えてください。以下のコードでコメントしても何も変わりません!

class ReverseApp{
    public static void main(String[] args) throws IOException{
    String input, output;
    while(true){

        System.out.print("Enter a string: ");
        System.out.flush();
        input = getString(); // read a string from kbd
        if( input.equals("") ) // quit if [Enter]
        break;
        // make a Reverser
        Reverser theReverser = new Reverser(input);
        output = theReverser.doRev(); // use it
        System.out.println("Reversed: " + output);

   }
   }
}

ありがとうございました

4

3 に答える 3

8

ストリームにデータを書き出すと、ある程度のバッファリングが発生し、最後のデータが実際にいつ送信されるかは正確にはわかりません。ストリームを閉じる前にストリームに対して多くの操作を実行する場合があります。flush() メソッドを呼び出すと、既に書き込んだと思われる最後のデータが実際にファイルに出力されることが保証されます。

Sierra & Bates による Sun Certified Programmer for Java 6 Examからの抜粋。

System.outあなたの例では、バッファにバイトが書き込まれるたびに自動的にフラッシュされることを意味する自動フラッシュを実行するため、何も変更されません。

于 2013-10-04T14:40:48.963 に答える
3

System.out.flush() を使用して、出力バッファーに格納されているデータを書き込みます。バッファは、ある時点までテキストを保存し、いっぱいになると書き込みます。バッファをフラッシュせずにプログラムを終了すると、データが失われる可能性があります。

于 2013-10-04T14:38:00.257 に答える
2

これが言うドキュメントです。

于 2013-10-04T15:23:58.923 に答える