获取给定扩展的统一类型标识符

时间:2009-10-01 20:25:20

标签: objective-c cocoa macos uti

我正试图在Cocoa中找到一些方法来将文件扩展名转换为统一类型标识符。也就是说,我想找到一些方法:

".jpg" => "public.jpeg"
".html" => "public.html" 
".ttf"=> "public.truetype-font"

我搜索过NSWorkspace文档但找不到任何内容。我能得到的最接近的是:

- (NSImage *)iconForFileType:(NSString *)fileType

返回文件扩展名的图标,

– (NSString *)preferredFilenameExtensionForType:(NSString *)typeName

与我正在尝试的完全相反。你们中的任何人都知道怎么做吗?

我真的希望我不必手动检查很多扩展。

提前致谢。

2 个答案:

答案 0 :(得分:40)

一周前我需要这个:

NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, 
                                                                   (CFStringRef)[myFilePath pathExtension], 
                                                                   NULL);

如果我在扩展@“php”,@“jpg”,@“html”和@“ttf”上运行它,它会打印:

public.php-script
public.jpeg
public.html
public.truetype-ttf-font

答案 1 :(得分:11)

您可以使用终端并调用 mdls ,它会为您提供有关某种文件类型(包括UTI)的各种信息。

mdls /myPath/to/myFile.ext
然后,mdls会在kMDItemContentTypeTree中显示相关的UTI (也可以从你的Cocoa App btw中调用mdls。)