我有一个没有扩展名的文件,我需要知道它是什么类型的文件。例如,给定文件的路径,我想知道文件是图像,电影还是文本文件。
这可能吗?
对于记录,这是针对iOs应用程序。
提前致谢!
答案 0 :(得分:1)
嗯,你可能是粗野的,只是按照简单/可能性的顺序检查一些特征,如:
: - )
答案 1 :(得分:0)
这取决于文件格式。通过检查文件格式的开头,可以轻松识别某些文件格式。但是只有通过检查文件扩展名才能知道某些文件类型。因此,唯一的方法是,如果您有一个文件可能已知格式的有限列表,并找到有关如何识别它们的文档。
答案 2 :(得分:-1)
我会考虑使用Uniform Type Identifiers。由于UTI被组织成层次结构,因此一种可能性是检查给定文件的优选UTI是否符合顶级UTI,例如, public.image
用于图片,public.movie
用于电影等。
因此,例如处理文件扩展名:
NSString *file = @"…"; // path to some file
CFStringRef fileExtension = (CFStringRef) [file pathExtension];
CFStringRef fileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, NULL);
if (UTTypeConformsTo(fileUTI, kUTTypeImage)) NSLog(@"It's an image");
else if (UTTypeConformsTo(fileUTI, kUTTypeMovie)) NSLog(@"It's a movie");
else if (UTTypeConformsTo(fileUTI, kUTTypeText)) NSLog(@"It's text");
CFRelease(fileUTI);
如果你有MIME类型而不是文件扩展名,则可以使用kUTTagClassMIMEType
代替kUTTagClassFilenameExtension
。