プログラムを使用して、ある場所から別の場所にフォルダー (その中のすべてのファイルと共に) をコピーする Java プログラムがあります。ユーザーがこのフォルダーに zip ファイルを貼り付けてから解凍したと仮定します。その間、プログラムが起動すると、ファイルのみがコピーされます。このファイルの解凍が完了するまで待ちたいと思います。
したがって、zipファイルが完全に解凍されたことを検出し、ファイルの通常のコピーのみを再開できるプログラムによる方法を探しています.これを行う方法はありますか?
プログラムを使用して、ある場所から別の場所にフォルダー (その中のすべてのファイルと共に) をコピーする Java プログラムがあります。ユーザーがこのフォルダーに zip ファイルを貼り付けてから解凍したと仮定します。その間、プログラムが起動すると、ファイルのみがコピーされます。このファイルの解凍が完了するまで待ちたいと思います。
したがって、zipファイルが完全に解凍されたことを検出し、ファイルの通常のコピーのみを再開できるプログラムによる方法を探しています.これを行う方法はありますか?
解凍されたファイルの名前を変更できるかどうかを確認してください。「名前変更可能」でない場合、ファイルはおそらくロックされています。
unzipper を制御できないため、これを行う信頼できる方法はありません。たとえば、ユーザーは一部のファイルのみを解凍することを決定できます。解凍ツールはユーザーが UI で何を選択したかを通知しないため、「すべての」ファイルがいつ解凍されたかを知る信頼できる方法はありません。
回避策:
ユーザーは別のフォルダーでファイルを解凍し、監視しているフォルダーにファイルを移動する必要があります。同じディスク上での移動操作はアトミックであるため、完全なファイルのみを確実に取得できます。
ZIP アーカイブを入力として受け入れ、自分で解凍します。そうすれば、解凍プロセスを完全に制御でき、完全なファイルのみを処理することができます。また、ZIP の「目次」は ZIP アーカイブの最後にあるため、完全な ZIP アーカイブのみを処理することも保証されます。