如何在文件没有扩展名的情况下获取文件UTI?

时间:2011-05-25 20:39:13

标签: iphone ios ipad file filesystems

即使没有文件扩展名,有没有办法找出文件UTI(统一类型标识符)?

现在,当文件有扩展名时,我就这样得到它:

CFStringRef fileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)[file pathExtension], NULL);

我在网上找到了这个片段,目的是在Mac上进行。但我在iOS:

CFStringRef typeString = UTCreateStringForOSType(outInfo.filetype);
itemUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, typeString, NULL);
CFRelease( typeString );

注意:outInfo的类型为LSItemInfoRecord,在iOS中不存在。

1 个答案:

答案 0 :(得分:1)

识别没有扩展名且没有其他元数据的文件的唯一方法是查看其内容并根据该文件识别文件。

如果它是一个图像文件,那么它通常以一些魔术字符串开头,将其标识为JPEG,PNG等。您也可以尝试将其作为图像打开并查看它是否有效。

对于文本文件,该方法不起作用,因为文本文件可以包含任何内容。如果您对文件中的文本有所了解,可以将其作为字符串打开,然后在字符串中搜索该文本。如果没有,你可以只从字典中查找单词,然后假设它是文本,如果它包含合理数量的字典单词。

如果没有扩展名,你可能最好只是要求用户识别文件类型 - 它更容易,更可靠。