4

Java 7を使用して2つのディレクトリを比較します。somefile.txtがディレクトリAに存在するが、ディレクトリBには存在しない場合、2つのケースを区別したいと思います。

  1. somefile.txtは以前は両方のディレクトリにありましたが、その後ディレクトリBから削除されました。
  2. somefile.txtがディレクトリAに追加されました(ディレクトリBにはありません)

監視を使用できず、logs\historyを管理できません。また、OSに依存しないソリューションを見つけたいと思います。

何らかの方法で両方のフォルダーのlastModifiedとlastModifiedを比較して、somefile.txtが新しいか削除されているかを推測できますか?いくつかの単純なアルゴリズムの解決策があるように感じますが、それを見つけることができません...

ヘルプ...

4

2 に答える 2

2

ファイルがBで新しいのか、Aから削除されたばかりなのかはわかりません。フォルダとそのコンテンツのログまたは履歴がない限り、履歴を現在の状態と比較できます。

あなたの場合、あなたはディレクトリの現在の状態しか持っておらず、以前に何が起こったのかを推測する方法はありません。

于 2012-12-29T09:41:20.940 に答える
1

そのためには、どのディレクトリ(AまたはB)が新しいコピーであり、どちらが古いコピーであるかを判別する必要があります。Aのすべてのファイルから最新のファイル変更時間を取得し、それをBの同じ計算と比較して、どのツリーが新しいかを判断できますか?次に、1と2を区別するのは簡単です。ファイルが新しいディレクトリにあるが、古いディレクトリにはない場合は、ファイルが作成され、それ以外の場合は削除されます。

問題によっては、変更時間ではなくファイル作成時間を使用したい場合があります

于 2012-12-29T09:03:52.480 に答える