2017-03-14 17 views
0

ファイルに問題があります。アプリケーション1とアプリケーション2があり、アプリケーション1がファイルを作成しています(処理時間があります)。私は、プロセスアプリケーション1が終了すると、アプリケーション2で作成されたファイルからの使用を希望します。私は作成されたファイルのポーリングチェックを使用していますが、ファイルが閉じられているかどうかを理解できません(アプリケーション1の処理終了)。 ソースアプリケーション1がロックされていて、ソースアプリケーション2の変更が必要です。Javaファイルが閉じています

+0

を持つことになりますのでご注意ください。書き込みが終わったら、必要な名前に名前を変更します。したがって、アプリケーション2は完了したファイルを取得します –

+0

私はアプリケーション1のソースにアクセスしません。 –

+0

'while(真)'に 'try catch'を使います。ファイルを開こうとしてください。ファイルを開くことができたら、ループから解除します。 –

答えて

1

アプリ1へのアクセスを持っていないので、私たちにできる唯一のことは、アプリ2

からであるWindowsシステム上にある場合、システムは、ファイル名を変更することはできません。他のプロセスがファイルを読み書きしている場合。

出力ファイルの名前をアプリ2から変更することができます。正常に機能する場合、そのファイルは他のプロセスで開かれていないため、出力ファイルの処理を開始できます。もちろん、ファイル名を変更することもできます。

renameTo Java Doc

` .extension.part`としてファイルを保存し、アプリケーション1からの書き込みながら* NIXシステムが異なる振る舞い

0

ファイルの一時的な名前を使用して、完全に書き込まれたら適切な名前に変更できます。

".lock"ファイルを作成して、読み取りまたは書き込みがロックされていることを知らせることができます。読み書きが完了すると、ロックファイルを削除できます。各アプリケーションは、ロックファイルが存在しない場合(読み書き操作を実行する前にロックファイルを作成し、完了したらすぐに削除する必要があります)、ファイルを読み書きする必要があります。

+0

残念ながら、答えには関係するすべてのアプリケーションを制御する必要があり、OPはファイルを作成するアプリケーションを制御できません。 –

+0

ああ、私は質問を解析するのが難しいと感じました。 –

関連する問題