有没有一种在MacOS上编程访问单个文件元数据的方法?
我知道Apple提供了NSMetadataQuery
,但它似乎只允许在特定文件夹中搜索符合某些参数的文件。实际上,我希望不要查找所有匹配的文件,而是检查一个特定的文件是否匹配。
是否有办法,还是唯一的解决方案是分析查询结果并查看我的文件是否在其中?
有没有一种在MacOS上编程访问单个文件元数据的方法?
我知道Apple提供了NSMetadataQuery
,但它似乎只允许在特定文件夹中搜索符合某些参数的文件。实际上,我希望不要查找所有匹配的文件,而是检查一个特定的文件是否匹配。
是否有办法,还是唯一的解决方案是分析查询结果并查看我的文件是否在其中?
mdls
获取其数据的方式一样获取元数据。在文档中搜索MDItemCreate
。(您可以找到:核心库-> 数据管理-> 文件管理-> MDItem参考)- (NSDictionary *) metaDataDictionaryForFileAt:(NSString *)fileName
{
MDItemRef item = MDItemCreate( kCFAllocatorDefault, (CFStringRef)fileName );
if( item==nil ) return nil;
CFArrayRef list = MDItemCopyAttributeNames( item );
NSDictionary *resDict = (NSDictionary *)MDItemCopyAttributes( item, list );
CFRelease( list );
CFRelease( item );
return [resDict autorelease];
}
< p > 备注:文件名后缀决定了kMDItemContentType
、kMDItemContentTypeTree
和kMDItemKind
的值,而不是文件内容!
我认为这个没有API(这很奇怪,你应该报告一个错误)。如果你不想运行查询,那么你唯一的选择就是使用NSTask
来生成mdls
命令的实例,然后解析结果。