1. ホーム
  2. java

[解決済み] Javaを使って、書き込み中のファイルから読み込むにはどうしたらいいですか?

2022-11-13 02:04:36

質問

ファイルに情報を書き込むアプリケーションを持っています。この情報は、アプリケーションの合格/不合格/不正を判断するために実行後に使用されます。これらの合格/不合格/正しさのチェックをリアルタイムで行うことができるように、書き込み中にファイルを読むことができるようにしたいと思います。

これが可能であると仮定しますが、Java を使用する場合、どのような問題があるのでしょうか。読み込みが書き込みに追いついた場合、ファイルが閉じられるまで、さらに書き込みを待つだけでしょうか、それとも読み込みはこの時点で例外を投げるのでしょうか。後者の場合、私はそれから何をするのですか?

私の直感は現在、BufferedStreams の方に私を押しやっています。これは行くべき道でしょうか?

どのように解決するのですか?

を使用してサンプルを動作させることができませんでした。 FileChannel.read(ByteBuffer) を使っても動作しませんでした。しかし、以下のコードは動作させることができました。

boolean running = true;
BufferedInputStream reader = new BufferedInputStream(new FileInputStream( "out.txt" ) );

public void run() {
    while( running ) {
        if( reader.available() > 0 ) {
            System.out.print( (char)reader.read() );
        }
        else {
            try {
                sleep( 500 );
            }
            catch( InterruptedException ex ) {
                running = false;
            }
        }
    }
}

もちろん、同じことがスレッドではなくタイマーとしても機能しますが、それはプログラマーに任せています。私はまだより良い方法を探していますが、これは今のところ私のために機能しています。

ああ、そして、私はこれを注意深く見ています。私は 1.4.2 を使用しています。はい、私はまだ石器時代にいることを知っています。