java - 从文件属性中检索标签列表
问题描述
我想以编程方式检索附加到 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;
}
解决方案
在 Windows PowerShell 中,您可以通过以下方式获取它PresentationCore.dll
:
function Get-ImageTags {
param(
[string]$Path
)
Add-Type -AssemblyName PresentationCore
try {
$FileStream = (Get-Item $Path).Open('Open','Read')
$BitmapFrame = [System.Windows.Media.Imaging.BitmapFrame]::Create($FileStream)
$Tags = @($BitmapFrame.Metadata.Keywords |%{ $_ })
}
catch {
throw
return
}
finally {
if($FileStream){
$FileStream.Dispose()
}
}
return $Tags
}
然后像这样使用:
$Tags = Get-ImageTags -Path path\to\file.jpeg
该$Tags
变量现在将包含一个标签数组
推荐阅读
- azure-devops - 如何在 Azure YAML 管道中将布尔值指定为变量?
- firebase - Flutter - 列表视图中的选项卡过滤
- c# - 使用套接字时,我在 beginreceive 上收到错误
- powershell - 在单独的文件中自定义 PowerShell 命令日志
- android - 如何修复清单合并失败?
- javascript - 如何使用 THREE.js 添加褪色反射?
- asp.net - Asp.net Core 3.1 HttpContext.Session.GetString("Index")
- iis - IIS 管理器显示空列表
- c# - 使用访问令牌登录到 Google 帐户(网页,而不是 REST API)
- javascript - 如何编写for循环以从对象中获取属性并将其插入函数javascript