如何获取文件类型如果文件扩展名不可用

时间:2016-09-01 10:10:02

标签: objective-c macos cocoa file-type uti

嘿伙计我一直陷入这样的境地:我想知道几个没有扩展名的文件的文件类型。到目前为止,我知道每个文件都与UTI标识符和扩展名相关联。

1。在我的情况下,文件扩展名不可用,所以没有问题。

2。文件没有扩展名。

Apple documentation over file system over O.S

One of stack overflow reference

Article over dynamic UTI

我也来过这里,但我猜想有一些我不知道的或者是匿名的方向。

必须感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

UTI旨在允许在应用程序之间传递类型化数据,例如通过剪贴板发送图像。只要数据标记有适当的UTI,就可以为能够处理该类型数据的消费者提供数据。

将数据放在粘贴板上的应用程序负责确定placed onto the pasteboard的适当UTI。

确定文件的UTI时,操作系统会获得此from the extension that is used。这是操作系统在查看文件时用于确定UTI的唯一源。如果文件没有扩展名,则会获得UTI public.data

  

相反,Mac OS X从其他信息派生UTI,主要是 - 和tragically - 来自文件扩展名。

UTI不会以任何形式存储/缓存/保留在文件系统上,除了文件扩展名的形式。

除了使用文件扩展名之外,唯一可用的机制是使用像file这样的工具,或者它的库libmagic,它是文件程序分发的一部分,用于询问文件以确定它可能是文件类型。

答案 1 :(得分:-1)

你可以试试这个:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil];
NSString *fileName = @"YOUR_FILE_NAME";
for (NSString *file in directoryContent )
{
    NSString *fileNameWithOutExt= [file stringByDeletingPathExtension];
    if([fileName isEqualToString:fileNameWithOutExt])
    {
        NSLog(@"Found");
    }
}