2016-11-24 3 views
1

私はファイルを修正することができる2〜3のプログラムを持っていますが、1つのプログラムがそれを使用している場合、他のものをブロックしたいと思います。私はこれで同期を使用することはできません。他の規定はありますか?Java:あるプログラムがそれを使用している場合、他のプログラムがファイルにアクセスするのをブロックする方法はありますか?

+0

あなたが実際には同じプログラムで別のプログラム、または別のスレッドを意味しますか? – khelwood

+3

これはあなたのために機能しますか? http://stackoverflow.com/questions/128038/how-can-i-lock-a-file-using-java-if-possible – Jaydee

+1

@ Jaydeeの提案は、私が通常使っていたものです。しかし、ドキュメントによれば、「ロックが実際に別のプログラムがロックされた領域のコンテンツにアクセスするのを防ぐかどうかは、システムに依存するため、不特定」です。これはあなたにとって問題ではないことを確認してください。 – Nando

答えて

1

異なるアプリケーションでロックされているファイルは、Javaレベルで処理されていません。 OSレベルで処理する必要があります。異なるOSにはさまざまなソリューションがあります。

他のプログラムを使用している場合は、他のユーザーをブロックしたいと思います。

おそらく、すべてのリーダーとライターを除いて、書き込みロックが必要です。しかし、いくつかのプログラムを許可します。窓にはおそらくこのlinkの関心があります。

それは依存とてもプラットフォームですが、それをしようとするJavaコードです:

FileInputStream in = new FileInputStream(file); 
try { 
    java.nio.channels.FileLock lock = in.getChannel().lock(); 
    try { 
     Reader reader = new InputStreamReader(in, charset); 
     ... 
    } finally { 
     lock.release(); 
    } 
} finally { 
    in.close(); 
} 
+0

実際には、Java APIがあります:http://stackoverflow.com/a/128168/718590 – pkalinow

関連する問題