Получение информации о файлах

Этот документ объясняет, как использовать NSWorkspace для получения информации о файлах.

Нахождение типов файлов и приложений

Для получения типа файла и какое приложение открывает файл используйте NSWorkspace’s getInfoForFile:application:type: метод. Строка, переданная методу, должна быть полным путем желаемого файла. Этот фрагмент кода получает приложение и тип для файла в fullPath:

NSString *fullPath;    // Assume this exists.
NSString *theApplication;
NSString *theType;
 
[[NSWorkspace sharedWorkspace] getInfoForFile:fullPath
                               application:&theApplication
                               type:&theType];
[theApplication retain];
[theType retain];

Для получения другой информации о файле используйте NSFileManager методы displayNameAtPath:, fileExtensionHidden, fileHFSCreatorCode, fileHFSTypeCode, и fileAttributesAtPath:traverseLink:.

Для получения полного пути для приложения используйте fullPathForApplication: метод. Предоставленное имя приложения может или включать или опустить .app расширение.

Чтобы узнать, указывает ли путь на пакет файла, используйте isFilePackageAtPath: метод.

Получение значков

Методы iconForFile: и iconForFiles: получите значок для файла или значки для массива файлов. Файлы должны быть указаны с полными путями. iconForFileType: метод обеспечивает значок для данного расширения файла или закодированного типа файла HFS. Этот фрагмент кода получает значок для файла в fullPath, и изменяет размеры его к полным 128 пикселям разрешением на 128 пикселей:

NSString *fullPath;    // Assume this exists.
NSImage *theIcon;
 
theIcon = [[[NSWorkspace sharedWorkspace] iconForFile:fullPath] retain];
[theIcon setSize:NSMakeSize(128.0,128.0)];

Для получения универсального значка вызовите NSFileTypeForHFSTypeCode функция с одной из констант значка, определенных Icon Services в платформе Углерода (см. Standard Finder Icon Constants в Icon Services и Ссылке Утилит), затем используйте iconForFileType: метод с результатом. Этот фрагмент кода получает значок универсального приложения в полном размере:

#import <Carbon/Carbon.h>
// ...
NSImage *theIcon;
 
theIcon = [[[NSWorkspace sharedWorkspace]
              iconForFileType:
              NSFileTypeForHFSTypeCode(kGenericApplicationIcon)] retain];
[theIcon setSize:NSMakeSize(128.0,128.0)];