javaのInputStreamに関する質問があります。Javaの入力ストリームを読み取る無限ループ
私は以下のようにファイルからデータを読んでいます:
FileInputStream xfis = new FileInputStream('filename')
int size = xfis.avaliable();
int len = 0 ;
byte[] buffer new byte[size];
while((len = xfis.read(buffer) > -1)
(
// process some logic
)
xfis.close();
....
そしてまた、バッチプログラムに毎分を実行している:両方のプログラムを同時に読み取りと書き込みのとき
FileOutputStream fos = new FileOutputStream('filename')
FileLock flock = fos.getChannel().tryLock();
if(flock != null){
fos.write()
flock.release();
}
fos.close();
...
プログラムいますファイルが無限ループでスタックするのを読み取ります。
どうすれば問題を解決できますか?
おかげ
:
はこれを試してみてください。書き込みはちょうどいくつかの書き込みを行い、次に停止するつもりですか? –
while((len = xfis.read(buffer)> 0)...? –
読み込みのときではなく書き込み時にロックするように見えます。読み込む前にロックを取得して、2つのプロセスを持たないようにしてください同じファイルで同時に作業している人(排他的なアクセス権を持っていると思う人) – yoozer8