3

当您右键单击 Windows 中的任何文件时,您可以在菜单中选择“属性”。在即将出现的对话框中,您会看到一个选项卡:“详细信息”。在那里您可以找到很多属性(名称、类型、所有者……)!我的问题是:

如何读取此文件属性?

几年前我已经尝试过了,这对我来说是不可能的。我认为使用 Java 1.7 是可能的。我已经尝试过 UserDefinedAttributeView 但它不起作用。

我尝试了以下方法:我在详细信息选项卡中看到“文件”部分和属性“名称”。但是如果我执行下面的代码,我会得到一个异常:

线程“main”中的异常 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

我有一个类似的问题,我解决了它只是调用新属性“用户”。并使用相同的字符串“user.”获取它。我不确定那个“文件”。有效,无论如何通过命令“view.list().toString()”检查用户定义的属性列表。

希望能帮到你(..即使很晚......)

于 2015-03-07T15:35:39.890 回答
0

我认为你的问题不是它没有找到test.txt,而是它没有找到File.Name。您的代码片段有....view.size(name), where name = "File.Name"- 所以它正在尝试查找文件的大小,但File.Name没有找到。这是因为您不打算File.Name成为文件名,而是打算将其作为您要查找的属性的名称。

(也就是说,我也在尝试找到一种解决方案,该解决方案可用于在 Java 程序中从 Details 选项卡中获取属性值......到目前为止我发现的所有内容都需要 JNA。)

于 2015-11-18T20:18:50.440 回答