Java 从文件属性检索标记列表

Java 从文件属性检索标记列表,java,windows,Java,Windows,我想以编程方式检索Windows 7中附加到文件的标记列表。我试图创建一个文件->标记的映射,我可以在不同的平台上移动 有人知道库吗,或者知道从命令行获取“标记”值的方法吗?到目前为止,我只能找到获取基本文件属性的方法,如作者、创建日期等 很遗憾,我无法在计算机上加载PowerShell脚本,因此无法使用这些功能 我尝试使用“UserDefinedFileAttributeView”,但没有返回任何值,如下所示: private LinkedList<String> windo

我想以编程方式检索Windows 7中附加到文件的标记列表。我试图创建一个文件->标记的映射,我可以在不同的平台上移动

有人知道库吗,或者知道从命令行获取“标记”值的方法吗?到目前为止,我只能找到获取基本文件属性的方法,如作者、创建日期等

很遗憾,我无法在计算机上加载PowerShell脚本,因此无法使用这些功能

我尝试使用“UserDefinedFileAttributeView”,但没有返回任何值,如下所示:

   private LinkedList<String> windowsGetAllFileTags(File file) {

    UserDefinedFileAttributeView fileAttributeView = Files.getFileAttributeView(file.toPath().toAbsolutePath(), UserDefinedFileAttributeView.class);
    List<String> allAttributes = null;
    try {
        allAttributes = fileAttributeView.list();
    } catch (IOException e) {
        e.printStackTrace();
    }
    for(String attribute : allAttributes) {
        System.out.println("Attribute = " + attribute);
    }
    return null;
}
私有链接列表windowsGetAllFileTags(文件){
UserDefinedFileAttributeView fileAttributeView=Files.getFileAttributeView(file.toPath().toabsolutionPath(),UserDefinedFileAttributeView.class);
列出所有属性=null;
试一试{
allAttributes=fileAttributeView.list();
}捕获(IOE异常){
e、 printStackTrace();
}
for(字符串属性:allAttributes){
System.out.println(“属性=”+属性);
}
返回null;
}

怎么样

我没有试过,但这可能有用:
Files.getAttribute(path.get(“/some/dir”,“file.txt”),“description:tags”)

怎么办

我没有试过,但这可能有用:
Files.getAttribute(path.get(“/some/dir”,“file.txt”),“description:tags”)

在Windows PowerShell中,您可以通过以下方式获取它:

然后使用类似于:

$Tags = Get-ImageTags -Path path\to\file.jpeg

在Windows PowerShell中,
$Tags
变量现在将包含一个标签数组,您可以通过以下方式获取它:

然后使用类似于:

$Tags = Get-ImageTags -Path path\to\file.jpeg

$Tags
变量现在将包含一个标签数组

上有一个Java库,名为
PE/COFF 4J


如果您提到获取图像或视频的标签,您已经编写了名为as的Java库

要迭代文件中的所有值,请执行以下操作:

for (Directory directory : metadata.getDirectories()) {
    for (Tag tag : directory.getTags()) {
        System.out.println(tag);
    }
}
您还可以从特定目录中读取特定值:

// obtain the Exif SubIFD directory
ExifSubIFDDirectory directory 
    = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class);

// query the datetime tag's value
Date date = directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL);
Maven用户也可以使用该库


有一个Java库编写并称为
PE/COFF 4J
on


如果您提到获取图像或视频的标签,您已经编写了名为as的Java库

要迭代文件中的所有值,请执行以下操作:

for (Directory directory : metadata.getDirectories()) {
    for (Tag tag : directory.getTags()) {
        System.out.println(tag);
    }
}
您还可以从特定目录中读取特定值:

// obtain the Exif SubIFD directory
ExifSubIFDDirectory directory 
    = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class);

// query the datetime tag's value
Date date = directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL);
Maven用户也可以使用该库


为什么要同时标记
java
powershell
?你们两个都想要什么?另外,请提供您迄今为止所取得的成就(发布代码)。我正在考虑使用其中一种解决方案,或者也可以,但是在研究之后,由于权限不足,我无法使用PowerShell加载脚本。将删除标记。我非常怀疑
文件。getFileAttributeView
是否是您所需要的。文件属性与文件的目录条目一起存储。它们是权限和只读标志之类的东西。您所追求的是存储在JPG和其他类型媒体文件内容中的元数据。您需要查找第三方库。为什么要同时标记
java
powershell
?你们两个都想要什么?另外,请提供您迄今为止所取得的成就(发布代码)。我正在考虑使用其中一种解决方案,或者也可以,但是在研究之后,由于权限不足,我无法使用PowerShell加载脚本。将删除标记。我非常怀疑
文件。getFileAttributeView
是否是您所需要的。文件属性与文件的目录条目一起存储。它们是权限和只读标志之类的东西。您所追求的是存储在JPG和其他类型媒体文件内容中的元数据。您需要查找第三方库。遗憾的是,“description”不是有效视图,我将尝试查找更多示例-可能description不是视图问题的正确名称。遗憾的是,“description”不是有效视图,我将尝试查找更多示例-可能说明不是视图问题的正确名称。我的错误是,我以为我可以使用PowerShell,但由于用户限制,我无法加载ps文件。
PowerShell.exe-ExecutionPolicy Bypass
我的错误,我原以为我可以使用PowerShell,但由于用户限制,我无法加载ps文件。
PowerShell.exe-ExecutionPolicy Bypass
这仅适用于可执行映像。OP似乎在询问JPG、MP4等文件类型。@谢谢!元数据提取器库工作得很好。它仅适用于可执行映像。OP似乎在询问JPG、MP4等文件类型。@谢谢!元数据提取器库工作得非常好。
// obtain the Exif SubIFD directory
ExifSubIFDDirectory directory 
    = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class);

// query the datetime tag's value
Date date = directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL);