Доступ к метаданным одного файла - PullRequest
3 голосов
/ 24 марта 2012

Есть ли способ программного доступа к метаданным одного файла в MacOS?

Я знаю, что Apple предоставляет NSMetadataQuery, но, похоже, она позволяет искать в определенных папкахфайлы, соответствующие некоторым параметрам.На самом деле, я бы предпочел не искать все подходящие файлы, а проверить, соответствует ли конкретный файл.

Есть ли способ или единственное решение - проанализировать результаты запроса и посмотреть, есть ли среди них мой файл?

Ответы [ 2 ]

4 голосов
/ 25 марта 2012

Вы можете получить метаданные таким же образом, как команда 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 определяются суффиксом имени файла, а не содержимым файла!

1 голос
/ 25 марта 2012

Я не думаю, что есть API для этого (что странно, вы должны сообщить об ошибке). Если вы не хотите выполнять запрос, тогда единственным вариантом будет использование NSTask для запуска экземпляра команды mdls и последующего анализа результатов.

...