3

有没有办法以编程方式访问 MacOS 上单个文件的元数据?

我知道 Apple 提供NSMetadataQuery,但它似乎只允许在特定文件夹中搜索与某些参数匹配的文件。实际上,我不想搜索所有匹配的文件,而是检查特定文件是否匹配。

有没有办法或唯一的解决方案是分析查询结果并查看我的文件是否在其中?

4

2 回答 2

4

您可以像命令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];
}

备注kMDItemContentType, kMDItemContentTypeTree, 和kMDItemKind的值由文件名的后缀决定,而不是由文件的内容决定!

于 2012-03-25T08:48:30.343 回答
1

我不认为有一个 API (这很奇怪,你应该提交一个错误)。如果您不想运行查询,那么您唯一的其他选择是使用NSTask生成mdls命令的实例,然后解析结果。

于 2012-03-24T22:02:29.023 回答