Cocoa:获取某些文件类型的人类可读描述,只知道扩展名

时间:2011-12-31 12:47:59

标签: macos cocoa core-foundation file-type

我正在努力获取某种文件类型的可读描述,我只知道文件扩展名。例如。我想从“h”类型获得“C Header源文件”,也可以从“zip”获得“Zip Archieve”

我用Google搜索,并找到了一个LSCopyKindStringForTypeInfo:

的解决方案
- (NSString *)humanReadableFiletype:(NSString *)ext
{
    NSString *res;
    LSCopyKindStringForTypeInfo(nil, nil, (CFStringRef)ext, (CFStringRef *)&res);
    return [res autorelease];
}

它适用于除Preview.app所采用的文件类型以外的大多数文件类型,因此“jpg”,“gif”和“pdf”将被解释为“预览文档”。 (XCode 3.2.5,Snow Leopard)

你们会帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试使用UTI(统一类型标识符)和相关API,如文档here所示:

#import <Carbon/Carbon.h>

- (NSString *)humanReadableFileTypeForFileExtension:(NSString *)extension
{
    CFStringRef fileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)extension, NULL);
    NSString *utiDescription = (NSString *)UTTypeCopyDescription(fileUTI);

    CFRelease(fileUTI);
    return [utiDescription autorelease];
}