3

Windows で任意のファイルを右クリックすると、メニューの [プロパティ] を選択できます。次のダイアログ ボックスに、[詳細] タブが表示されます。そこでは、多くのプロパティ (名前、タイプ、所有者など) を見つけることができます! 私の質問は:

このファイルのプロパティを読み取るにはどうすればよいですか?

私は何年も前にそれを試しましたが、私には不可能でした。Java 1.7では可能かもしれません。UserDefinedAttributeView を試しましたが、うまくいきません。

私は次のことを試しました: [詳細] タブにセクション "ファイル" とプロパティ "名前" が表示されます。しかし、以下のコードを実行すると例外が発生します。

スレッド「メイン」での例外 java.nio.file.NoSuchFileException: D:\test.txt:File.Name

そして、text.txt が存在します ;)

    Path path = new File("D:\\test.txt").toPath();        
    UserDefinedFileAttributeView view = Files.getFileAttributeView(path,   UserDefinedFileAttributeView.class);
    String name = "File.Name";
    ByteBuffer buf = ByteBuffer.allocate(view.size(name));        
    view.read(name, buf);
    buf.flip();
    String value = Charset.defaultCharset().decode(buf).toString();

あなたの貢献には本当に感謝をしている!

4

2 に答える 2

0

あなたの問題は、それが見つからなかったということではなく、見つからなかったということだと思いtest.txtますFile.Name。あなたのコード スニペットには....view.size(name), where name = "File.Name"- があるため、ファイルのサイズを見つけようとしていますが、それが見つかりFile.Nameません。これはFile.Name、ファイル名にするつもりはなく、探しているプロパティの名前にするつもりだからです。

(とは言っても、Java プログラム内の [詳細] タブからプロパティ値を取得するために機能するソリューションも見つけようとしています...これまでに見つけたものはすべて JNA を必要とします。)

于 2015-11-18T20:18:50.440 に答える
0

同様の問題があり、新しい属性「ユーザー」を呼び出すだけで解決しました。同じ文字列「user.」で取得します。「ファイル」かどうかわかりません。とにかく、コマンド「view.list().toString()」でユーザーの定義済み属性リストを確認してください。

あなたを助けてくれることを願っています(..かなり遅くても...)

于 2015-03-07T15:35:39.890 に答える