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];
}

注意: kMDItemContentTypekMDItemContentTypeTree、およびの値はkMDItemKind、ファイルの内容ではなく、ファイル名の接尾辞によって決まります!

于 2012-03-25T08:48:30.343 に答える
1

このための API はないと思います (これは奇妙です。バグを報告する必要があります)。クエリを実行したくない場合、他の唯一のオプションはNSTask、コマンドのインスタンスを生成してからmdls結果を解析するために使用することです。

于 2012-03-24T22:02:29.023 に答える