以编程方式确定OSX上的文件内容类型

时间:2012-06-08 15:15:08

标签: macos nsfilemanager

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

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

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

2 个答案:

答案 0 :(得分:1)

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

正如H2CO3所暗示的,你想要的是libmagic。但是你想要BSD版本。它是精细自由文件命令源的一部分,与OS X的内置文件命令来源相同,并且它是BSD许可的,并且它更频繁地更新。

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

答案 1 :(得分:0)

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