2012-06-08 67 views
0

我正在處理其內容格式已在多個版本的OSX上進行更改的文件,以前是ASCII,然後是JSON,現在是二進制plist。所以我需要確定它是什麼類型的文件,以便我可以將它解析爲文本,使用JSON API或將plist作爲字典/數組加載。以編程方式確定OSX上的文件內容類型

我可以使用/ usr/bin/file命令告訴我文件的內容類型,但我更願意以編程方式執行此操作。有沒有Cocoa API?

我看過NSFileManager attributesOfItemAtPath:錯誤:但是,這只是返回NSFileTypeRegular,這並沒有幫助。

回答

1

沒有與文件匹配的Cocoa API。有許多不同的Cocoa(和CF)API處理「文件類型」,但它們使用擴展和經典Mac Finder信息的混合,這不是你想要的。

你想要的是libmagic,就像H2CO3所暗示的那樣。但是你想要BSD版本。它是精細自由文件命令源的一部分,與OS X的內置文件命令來自同一源碼,它是BSD許可的,並且更新頻率更高。

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

+0

感謝你的這個,看起來比source forge鏈接更有前途。我希望避免依賴,但這應該足夠了。謝謝。 – brianpartridge

0

這可能會對您有所幫助:http://sourceforge.net/projects/libmagic/ 這是Linux上的Libmagic手冊頁;因爲這不是一個依賴於操作系統的庫,所以這很可能無需修改即可運行。請參閱http://linux.die.net/man/3/libmagic

+0

不幸的是,該項目自2000年以來似乎被拋棄並且未被採用.GPL許可證讓我很尷尬,因爲我可能會在某一天成爲產品的一部分。我希望可以使用與'file'命令相同的代碼的Cocoa方法。 – brianpartridge

+0

呃,'文件'命令使用我剛剛提供的庫... – 2012-06-08 18:35:31

+1

@brianpartridge:你從哪裏得到「自2000年以來被遺棄和未被觸動」的頁面,上面寫着「Last Update 2009-07-17」? – abarnert

相關問題