Когда я открываю информацию о файле и меняю приложение, ответственное за этот файл, где хранится это переопределение в системе?
2 ответа
Данные хранятся в ветке ресурсов файла, которая хранится как расширенный атрибут com.apple.ResourceFork
.
Возьмите следующее в качестве примера -
Используя Terminal, создайте тестовый файл, назвав его «test.txt»
System:~ user$ touch test.txt
По умолчанию файлы расширения "txt" открываются с помощью TextEdit . (Если вы не изменили общесистемное значение по умолчанию.) В Finder измените ассоциацию на что-то другое. Вернитесь в Терминал ..
System:~ user$ ls -l@ test.txt
-rw-r--r--@ 1 user staff 0 Sep 29 11:21 test.txt
com.apple.ResourceFork 1338
Символ @
обозначает, что файл имеет расширенные атрибуты, а ls -l@
перечисляет атрибуты как часть длинного формата.
Если у вас установлены Инструменты разработчика, вы можете использовать DeRez
для проверки ветки ресурса, и вы увидите путь к приложению, выбранному вами в ветке.
Это архаично, устарело, и его можно (по праву) назвать хаком ... но, учитывая, что система UTI и идентификатора пакета является "неполной", это то, что использует Apple.
Я не уверен насчет Mac OS X, но Mac OS (то есть Classic) использовала его для хранения в ветке ресурсов каждого файла с двумя частями информации: кодом типа и кодом создателя. Оба были четырехбайтовыми последовательностями и, таким образом, обычно отображались как строки из четырех символов. Код типа идентифицировал тип файла (например, TEXT для текстового файла, APPL для приложения), в то время как код создателя идентифицирует приложение, создавшее файл (например, ttxt для SimpleText или MSWD для Microsoft Word). Таким образом, файл, созданный SimpleText, будет по умолчанию открываться в SimpleText, но при этом он будет идентифицирован как текстовый файл и, следовательно, совместим с Microsoft Word, если вы решите открыть его вручную с помощью Word.
Snow Leopard больше не обращает никакого внимания на коды типов и создателей, заменив их на UTI, которые напоминают типы MIME, хотя и более гибкие, и их можно использовать для указания программы по умолчанию, а также для определения, какие программы совместимы с данным файл, но я не уверен, как выполняются отдельные переопределения.