【问题标题】:How To Get A File Type If File Extension is not available如果文件扩展名不可用,如何获取文件类型
【发布时间】:2016-09-01 10:10:01
【问题描述】:

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

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

2。文件没有扩展名。

Apple documentation over file system over O.S

One of stack overflow reference

Article over dynamic UTI

我也来过这里,但猜想我遗漏了什么或正在匿名方向。

感谢您的帮助。

【问题讨论】:

  • 一般情况下,如果没有扩展名,那么你必须猜测文件类型是什么。 linux 使用libmagic 来检查文件的内容以尝试确定文件类型。还有一个 bsd 命令 magic - 如果您运行 file --mime-type *,它将尝试为当前目录中的所有文件获取 mime 类型(例如 image/png)。
  • @Petesh 感谢您的回复...此时我也在做同样的事情,但我在想是否有机会通过任何预定义的方法接收文件类型。我可以在“public.data”中获取我的文件的 UTI,但它是图像类型,所以它应该给我“public.image”,以便我可以验证它是图像类型文件。因此,如果您知道是否可以完全获取没有扩展名的文件类型。
  • 默认情况下,如果没有扩展,UTI 将为public.data。我正在努力理解问题所在 - 如果不对文件进行一些检查,你就无法为文件变出 UTI。如果您没有扩展来建立您的期望,那么真的没有捷径可走。

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


【解决方案1】:

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

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

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

相反,Mac OS X 从其他信息(主要是 tragically)派生 UTI。

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

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

【讨论】:

    【解决方案2】:

    你可以试试这个:

    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");
        }
    }
    

    【讨论】:

    • 我想要文件伙伴的内容类型。我不是在寻找相同的文件...您可以看到没有扩展名的 safari 缓存文件,我只是在寻找这些文件的类型...
    猜你喜欢
    • 2013-05-28
    • 2019-02-06
    • 2011-05-16
    • 2011-07-29
    • 2011-05-27
    • 2014-04-14
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    相关资源
    最近更新 更多