Получение информации о файлах
Этот документ объясняет, как использовать 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)]; |