按扩展名获取文件类型说明

时间:2014-02-18 06:28:25

标签: objective-c macos

如何通过仅使用文件扩展名来获取文件类型的描述,就像在Finder.app中一样?换句话说,我想在NSString中获取该字段:

2 个答案:

答案 0 :(得分:3)

这里有一些快速“肮脏”的东西,说明了你的需求:

NSOpenPanel *openPanel = [[NSOpenPanel alloc] init];

[openPanel runModal];

NSString *path = [[openPanel URL] path];
NSString *type = [[NSWorkspace sharedWorkspace] typeOfFile:path error:NULL];

NSLog(@"%@", [[NSWorkspace sharedWorkspace] localizedDescriptionForType:type]);

打开面板可让您选择文件。 NSWorkspace首先确定文件的UTI(给定其路径),然后使用UTI获取描述文件类型的本地化字符串。

编辑:

如果你肯定只使用文件扩展名,那么使用这三行代替上面的最后三行:

NSString *extension = [[[openPanel URL] path] pathExtension];
CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef) extension, NULL);

NSLog(@"%@", [[NSWorkspace sharedWorkspace] localizedDescriptionForType:(__bridge NSString *) uti]);

答案 1 :(得分:0)

您应该通过向NSWorkspace的localizedDescriptionForType:提供文件通用类型标识符来获得该功能。