你如何获得文件的Finder“Kind”?

时间:2013-12-10 21:35:06

标签: cocoa file-type finder uti

我希望找到一个文件的Finder“Kind”。例如,对于文件“foo.css”,我想要字符串“CSS样式表”。

到目前为止,我正在做这样的事情:

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: filename];
NSString *utiType;
NSError *error;
BOOL success = [fileURL getResourceValue: &utiType
                                  forKey: NSURLTypeIdentifierKey
                                   error: &error];
if (!success) {
    NSLog(@"failure during reading utiType: error = %@", error);
    return;
}

NSString *utiDescription = (__bridge NSString *) UTTypeCopyDescription((__bridge CFStringRef) utiType);
if (utiDescription) {
    // use utiDescription here...
}

这给了我UTI的人类可读名称,在某些情况下运行良好(“foo.html”给出“HTML文本”),但对于CSS文件,它返回nil,所以显然不是同样的事情Finder显示在“Kind”栏中。

你怎么得到那种文件?

2 个答案:

答案 0 :(得分:2)

尝试LSCopyKindStringForURL,传递文件网址。

答案 1 :(得分:1)

我能够获得一个包含typeOfFile:error:后跟localizedDescriptionForType:的.css文件类型的字符串,但字符串不是“CSS样式表”,就像你想要的那样,它是“ Dashcode CSS Document“。其他扩展的其他一些示例:

ext      typeOfFile                    localizedDescriptionForType
------------------------------------------------------------------
.css     com.apple.dashcode.css        Dashcode CSS Document
.php     public.php-script             PHP script
.html    public.html                   HTML text
.txt     public.plain-text             text