一時ファイルにデータを書き込んで、このファイルをディレクトリAに保存する必要があります。これを行うには、File.createTempFileメソッドを使用します。しかし、ディレクトリAを定期的にポーリングして処理する一時ファイルがあるかどうかをチェックするスレッドがあります。ファイルを読み取り不可能に設定する
// create a temporary file that will contain the data
newTmpFile = File.createTempFile("prefix", recoverFileExt, new File(
recoverDirectory));
// the file is set to non readable, so the recovery thread cannot
// access it
newTmpFile.setReadable(false);
//write data into the file
// the file is written, it is set to readable so the recovery thread
// can now access it
newTmpFile.setReadable(true);
問題は、書き込み操作が行われる前にリカバリスレッドがファイルにアクセスしないようにすることです。したがって、私はこのメカニズムを使用します。ファイルを作成し、それを非可読として設定し、書き込み可能にし、可読性を設定して閉じます。問題は、ファイルの作成直後にファイルが読み込み可能であり、スレッドがそのファイルにアクセスできることです。
私は、作成時にファイルを非可読として設定する可能性があるか、他に解決策があるかどうかを知りたかったのです。
おかげ
同じファイルシステム上にある場合、ディレクトリ間でファイルの名前をすばやく変更できることにも注意してください。 (それはNFSでは推奨されていませんが、NFSは実際には「データの完全性」のために入りません)。 –
私はその施設の答えを受け入れます。しかし、私は、同期のためにファイル名を使用するのは良い方法ではないことを理解しています。 –