Применение пользовательских метаданных к файлам

Я пытался найти способ дать файлам пользовательские метаданные. Примером этого может быть присвоение тегов файлам, но это не единственный тип пользовательских метаданных, которые я хочу применить. Я просмотрел пару сообщений, подобных этим: Добавление пользовательских метаданных в файлы jpeg, Могу ли я добавлять пользовательские метаданные в файлы?, Установить пользовательские метаданные для файлов любого типа, но все они имеют дело с языки, отличные от Objective-C, который я пытаюсь использовать для пользовательских метаданных. Я просмотрел документацию Apple, такую ​​как Метаданные файла Справочник по атрибутам и Справочник по классу NSMetadataItem, но я не нашел ничего, связанного с пользовательскими метаданными.

Мой вопрос в основном заключается в том, можно ли применять пользовательские метаданные к файлам, и если да, то как мне это сделать?


person pasawaya    schedule 25.07.2012    source источник


Ответы (3)


Пользовательские метаданные могут быть созданы с помощью пользовательского MDImporter. Это плагин для Spotlight, который позволяет операционной системе просматривать/сканировать/искать пользовательские документы. Таким образом, ваши метаданные попадут в поисковый индекс Spotlight. Однако ваш подключаемый модуль импортера прожекторов должен каким-то образом извлекать метаданные из самого файла.

Вы также можете хранить метаданные в форке ресурсов файла, который является способом MacOS 9 и более ранних версий для работы со связанными данными. Это будет работать только с томами в формате HFS+ и создаст два файла в других файловых системах, таких как NFS. Также простые инструменты Unix, такие как cat FILE1 > FILE2, будут копировать только часть данных и потенциально нарушить цель. Я бы не рекомендовал это.

Или вы можете использовать так называемые расширенные атрибуты для файла, например, так, как средство поиска запоминает, откуда вы загрузили определенный файл, поэтому он может спросить вас, действительно ли вы хотите выполнить загрузку при первом запуске. (см. getxattr(2), listxattr(2), removexattr(2) и setxattr(2) или

Из командной строки: "xattr" или "ls -l@" Из C: getxattr(), listxattr(), removexattr() и setxattr()

person Andreas Fink    schedule 20.09.2012
comment
Я думаю, что идея MDImporter — это то, что мне нужно. Как мне создать собственный MDImporter? - person pasawaya; 21.09.2012

Я хочу сделать то же самое для iOS.

библиотека xattr выглядит как подходящий инструмент для работы. Спасибо за совет. хотя он основан на c, но я собираюсь использовать его для создания класса файловых объектов objc iOS, который поддерживает пользовательские метаданные. xattr использует void* под капотом, поэтому мой пользовательский словарь метаданных может поддерживать ключи NSString и значения NSCoding, которые будут достаточно гибкими.

это должно быть хорошей утилитой. на мой взгляд, может быть полезно хранить типы MIME, контрольные суммы или связанные URL-адреса загрузки для сохраненного файла. в более общем смысле я мог бы использовать класс файловых объектов для реализации утилит, отличных от метаданных файла, например, для создания файла при автоматическом создании любых необходимых папок на его пути.

person Rolf Hendriks    schedule 10.07.2014

Этот пост включает код Swift для чтения и записи расширенных атрибутов файла:

Быстрый пример записи расширенных атрибутов файла

person Robin Stewart    schedule 14.05.2019