2014-05-10 2 views
0

마지막 64K와 같이 ZIP 파일의 끝에는 ZIP 파일에 포함되어있는 것을 볼 수있는 중앙 디렉토리가 있습니다.ZipInputStream의 바이트 수 건너 뛰기

이제 Zip 파일을 ZipInputStream에로드하고 그 전에 ZIP 파일의 길이 인 64K를 선언했습니다.

그래서 많은 바이트와 긴 가변 상태를 건너 뛰고 그 후에 정보를 읽기 시작합니다. 하지만 실제로 어떻게 .skip() 메서드가 ZipInputStream에서 작동하는지 이해하지 못합니다.

사용 후 .getNextEntry() 메서드는 여전히 처음부터 시작되며 .read(byte[64 * 1024])은 스트림의 끝이 아님을 알립니다.

그래서이 skip() 메서드가 실제로 수행하는 작업과 내 중앙 디렉터리를 가져 오는 방법은 무엇입니까?

답변

2

내가 볼 수있는 한, 여기에서는 두 가지를 혼합합니다.

데이터를 평야 InputStream으로 읽고 원하는 위치로 이동하여 일반 데이터를 읽고 구문 분석을 시작하십시오.

ZipInputStream API를 사용하고 ZipEntries을 반복합니다. ZipInputStream은 중앙 디렉토리를 읽고 압축 된 바이트를 투명하게 압축 해제하는 원시 스트림의 추상화입니다. 따라서 ZipInputStream을 사용하여 원시 디렉토리에 액세스 할 수 없습니다.

자세한 내용은

+0

ZipInputStream 구현 스킵했다 볼 수 있지만 getNextEntry은 생략 곳에서 읽지 않습니다. – alwynd