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];
}
注意: kMDItemContentType
、kMDItemContentTypeTree
、およびの値はkMDItemKind
、ファイルの内容ではなく、ファイル名の接尾辞によって決まります!
このための API はないと思います (これは奇妙です。バグを報告する必要があります)。クエリを実行したくない場合、他の唯一のオプションはNSTask
、コマンドのインスタンスを生成してからmdls
結果を解析するために使用することです。