2009-10-08 3 views
1

알 수없는 소스에서 zip 파일 (Java ZipInputStream 또는 다른 라이브러리 사용)을 읽을 때 어떤 문자가 "문자 데이터"(그리고 인코딩 된 경우)인지 "바이너리 데이터". 그리고, 진 경우, 더 이상 정보를 결정하는 모든 방법 (MIME 타입 등)zip 파일에서 이진 파일 및 문자 인코딩 감지

편집는 ByteOrderMark (BOM)는 zipentries에서 발생 않으며, 그렇게 할 경우 우리는 그것을 위해 특별한 작업을해야한다.

답변

1

기본적으로 파일 내용을 결정하기위한 휴리스틱 스로 귀결됩니다. 예를 들어, 텍스트 파일 (ASCII)의 경우 파일에 사용 된 바이트 값의 범위를 확인하여 상당히 좋은 추측을 할 수 있어야합니다. 그러나 이는 결코 바보가 아닙니다.

식별하려는 파일 형식의 클래스를 제한해야합니다. "텍스트 데이터"와 "바이너리 데이터"를 구분하는 것으로 충분합니까? 그렇다면 당신은 탐지에 대해 상당히 높은 성공률을 얻을 수 있어야합니다.

UNIX 시스템의 경우 (대부분) 내용을 기반으로 파일 형식을 식별하려고 시도하는 항상 file command입니다.

0

/usr/share/file/magic에 정의 된 규칙을 적용 할 수있는 Java 구성 요소를 구현할 수 있습니다. 나는 그런 것을 갖고 싶어합니다. (기본적으로 첫 x 2 바이트를 볼 수 있어야합니다.)