4

ファイルが(外部プロセスによって)コピーされたかどうかを確実に判断するクロスプラットフォームの方法を見つけようとしています。

以前は、OSX/Linuxでは単にチェックしていました

File file = new File("path/to/file");
file.length()

次に、数秒待ってから、変更されたかどうかをもう一度確認します。

ただし、これはWindowsでは機能しません。これは、メソッドが常に完全なファイルのサイズ(つまり、ファイルが最終的にコピーされるサイズ)を返すためです。

lastModifiedタイムスタンプも確認しようとしましたが、これも変更されていないようです。

4

2 に答える 2

2

1 つのオプションは、「追加」を使用して書き込み用にファイルを開こうとするFileOutputStreamことです。それができる場合、別のプロセスファイルに書き込みを行っている可能性は低いです。もちろん、データを書き込む必要はありません。ストリームを作成するだけです。

( を使用するという、既に問題になっているアイデアを削除するために編集されましたlastModified。)

于 2012-10-01T16:45:50.413 に答える
0

最終的に、2つの異なる時点でのファイルのチェックサムとハッシュ(長さではなく)を計算し、ファイルがまだ書き込まれているかどうかを判断するためにそれらが変更されたかどうかを確認することで、これを解決しました。

于 2012-10-05T15:21:49.803 に答える