2011-05-25 189 views
5

即使没有文件扩展名,有没有办法找出文件UTI(统一类型标识符)?当文件没有扩展名时如何获取文件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中不存在。

+0

是否指的是没有文件扩展名,但具有HFS +文件类型代码集的文件?例如,一个纯文本文件的文件名是“Document”,文件类型是“TEXT”?或者没有文件类型和文件扩展名的文件? – NSGod 2011-05-26 00:40:46

+0

用户创建的文件(例如文本文件),然后删除扩展名“.txt”,使其看起来像“myDocument”而不是“myDocument.txt” – dontWatchMyProfile 2011-05-26 09:54:30

回答

1

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

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

尽管对于文本文件来说,该方法不会工作,因为文本文件可以包含任何内容。如果您对文件中的文本有一些了解,则可以将其作为字符串打开,然后搜索该文本的字符串。如果没有,你可以从字典中查找单词,然后假设它包含合理数量的字典单词就是文本。

如果没有扩展名,请求用户识别文件类型可能会更好 - 它更简单,更可靠。

相关问题