ファイル システムでファイルが移動または名前変更された場合でも、ファイルを追跡する方法を見つけようとしています。
私が持っていた 1 つのアイデアは、Java 7 で新しい UserDefinedFileAttributeView を使用し、カスタム ファイル属性を一種のカスタム ID として作成することでした。これはさまざまなプラットフォーム (主に Windows と Mac) で動作する可能性があると考えました。しかし、私はそれを機能させることができません。このページの例を試しても、この行に到達すると:
UserDefinedFileAttributeView view = Files.getFileAttributeView(file, UserDefinedFileAttributeView.class);
ビュー変数の null 値のみを取得すると、プログラムは nullpointer 例外で停止します。
次に、少なくとも Mac でこれを行うためのおそらくより簡単な方法があることを発見しました。それは、BasicFileAttributes fileKey 属性を使用することです。これを試してみたところ、ファイルを移動したり名前を変更したりしても、fileKeyは同じままのようです。ただし、この機能はプラットフォームに依存するとも書かれており、Windowsでは機能しないことをどこかで読んだことを覚えています...
まず第一に、fileKey メソッドは Mac でこれを行うための安定した方法ですか? その場合、Windows で同じ機能を使用するにはどうすればよいですか? UserDefinedFileAttributeView で null になる理由を知っている人はいますか? それを機能させることができれば、クロスプラットフォームになるはずだからです。
これは、非常に堅牢でスケーラブルである必要があるものではありません。私が開発している小さなヘルパー アプリケーションにすぎませんが、移動または名前変更されたときにファイルを識別する際に少なくとも信頼できる必要があります...