2012-06-08 5 views
0

여러 버전의 OSX에서 내용 형식이 변경된 파일을 사용하고 있습니다. 이전에는 ASCII 였고 JSON이었습니다. 이제는 바이너리 plist입니다. 그래서 나는 그것이 텍스트인지, JSON API를 사용하는지, 사전/배열로서 plist를로드 하는지를 파싱 할 수있는 파일의 종류를 결정할 필요가있다.프로그래밍 방식으로 OSX에서 파일 내용 유형 결정

파일 내용 유형을 알려주기 위해/usr/bin/file 명령을 사용할 수는 있지만 프로그래밍 방식으로이 방법을 사용하고 싶습니다. 코코아 API가 있나요?

NSFileManager attributesOfItemAtPath : error :하지만 NSFileTypeRegular를 반환하는데 이는 도움이되지 않습니다.

답변

1

파일과 일치하는 코코아 API가 없습니다. "파일 유형"을 처리하는 다양한 Cocoa (및 CF) API가 있지만 확장 기능과 고전적인 Mac Finder 정보의 하이브리드를 사용합니다. 이는 원하는 것이 아닙니다.

당신이 원하는 것은 H2M3에서 제안하는 libmagic입니다. 그러나 당신은 BSD 버전을 원한다. 그것은 Fine Free File Command 소스의 일부입니다. OS X의 내장 파일 명령과 동일한 소스이며, BSD 라이센스가 있으며 더 자주 업데이트됩니다.

http://www.darwinsys.com/file/에서 얻을 수 있지만 Homebrew 또는 MacPorts에서도 사용할 수 있습니다.

+0

감사합니다. 이것은 원본 단조 링크보다 훨씬 더 유망 해 보입니다. 나는 의존성을 피하기를 바랬지 만 이것으로 충분할 것입니다. 감사. – brianpartridge

0

도움이 될만한 사람 : http://sourceforge.net/projects/libmagic/ 다음은 Linux의 Libmagic에 대한 메뉴얼 페이지입니다. 이것은 OS 의존 라이브러리가 아니기 때문에 Mac에서는 수정하지 않아도 작동 할 가능성이 큽니다. http://linux.die.net/man/3/libmagic

+0

불행히도 프로젝트는 2000 년 이래 버려진 채로 남아 있습니다. GPL 라이센스로 인해 언젠가는 제품의 일부가 될 수도 있습니다. 나는 'file'명령과 동일한 코드를 사용하는 코코아 메소드를 원했다. – brianpartridge

+0

어, 'file'명령은 방금 제공 한 라이브러리를 사용합니다 ... –

+1

@brianpartridge : "Last Update 2009-07-17"페이지에서 "2000 년 이후로 버림받은 적이 있습니까?" – abarnert

관련 문제