2013-07-25 3 views
1

동영상 파일과 이미지 파일을 구별하는 "좋은"방법이 있습니까? 정확하게 "std :: wstring filePath"가 무엇인지 알고 싶습니다. 영화 또는 이미지입니다. 따라서 알려진 파일 형식으로 작업하고 있습니다. 동영상과 이미지를 구별하는 방법

즉, 나는 두 개의 클래스 myimage을에 myMovie 모두가 자신의 생성자에서 파일에 경로를 필요 있습니다. 그 클래스 중 하나를 만들기 전에 어떻게 든 파일 경로를 확인하고 싶습니다.

bool isMovie(const std::wstring & filePath); 
bool isImage(const std::wstring & filePath); 

물론 파일 확장명을 생각했지만 오류가 발생하지 않는 것이 좋고 확실하지는 않습니다. 그래서 파일 확장자를 사용하는 것이 좋으며 다른 가능한 솔루션이 가능합니다. 사전

+0

Qt와 관련이 없습니다. 왜 "qt"태그인가? –

+0

파일의 이름이 정확하고 가능한 모든 확장명을 나열하는 데 충분하다고 가정하면 충분할 수 있습니다. 그렇게 많이 생각할 수 없다면 아마도 어떤 방법이있을 수 있지만 거기에서 당신을 도울 수는 없습니다. – astrognocci

+0

Nikos, 저는이 프로젝트에서 Qt를 사용하고 있기 때문에 "Qt"태그를 넣었습니다. 그래서 누군가가 Qt 관련 코드를 조언 할 수 있습니다. – Dalamber

답변

3

에서

덕분에 당신은이 파일이 어떤 종류의 감지 libmagic를 사용할 수 있습니다. 파일 경로를 전달하면 파일에 대한 텍스트 설명이나 MIME 유형이 제공됩니다.

1

일반적으로 파일에는 마술 바이트이라는 특수 문자가 있습니다. 나는 이것을 사용할 사양에 대한 제어권을 가지고있다. zip, gif 또는 다른 이진 파일을 열려고하면 일반적으로 거기에 고유 한 문자열을 찾을 수 있습니다.

이러한 기능을 제공하는 file이라는 유닉스 도구 유틸리티가 있으므로 일종의 표준이 존재할 수 있습니다.

SQLite 3은 nice example을 제공합니다. 1.2.11.2.5을보십시오. 따라서 SQLite 3 DB라는 정보뿐만 아니라 추가 응용 프로그램 ID도 제공되므로 다른 도구가 어떤 응용 프로그램의 DB인지 인식 할 수 있습니다.

저는 개인적으로 파일의 첫 번째 바이트 수를 사용하여 이진 파일로 재생할 때 파일의 코드 유형 및 버전 정보를 사용했습니다.