0

我正在处理内容格式在 OSX 的多个版本上发生变化的文件,以前是 ASCII,然后是 JSON,现在是二进制 plist。所以我需要确定它是什么类型的文件,以便我可以使用 JSON API 将其解析为文本,或者将 plist 加载为字典/数组。

我可以使用 /usr/bin/file 命令告诉我文件内容类型,但我更喜欢以编程方式执行此操作。有这方面的 Cocoa API 吗?

我查看了 NSFileManager attributesOfItemAtPath:error: 但这只是返回 NSFileTypeRegular,这没有帮助。

4

2 回答 2

2

没有与文件匹配的 Cocoa API。有多种不同的 Cocoa(和 CF)API 来处理“文件类型”,但它们混合了扩展和经典的 Mac Finder 信息,这不是您想要的。

正如 H2CO3 所暗示的那样,您想要的是 libmagic。但是你想要 BSD 版本。它是 Fine Free File Command 源代码的一部分,与 OS X 的内置文件命令来源相同,它是 BSD 许可的,并且更新更频繁。

您可以从http://www.darwinsys.com/file/获得它,但也可以从 Homebrew 或 MacPorts 获得。

于 2012-06-08T21:18:00.307 回答
0

这可能对您有所帮助:http: //sourceforge.net/projects/libmagic/ 这是 Linux 上 Libmagic 的手册页;因为这不是一个完全依赖于操作系统的库,所以这很可能在不修改 Mac 的情况下也可以工作。见http://linux.die.net/man/3/libmagic

于 2012-06-08T15:32:23.593 回答