ZipInputStream — ZIP 형식 엔트리 읽기 입력 스트림

ZipInputStream — ZIP 형식 엔트리 읽기 입력 스트림

ZIP 파일 형식의 바이트 스트림에서 압축 및 비압축 파일 엔트리를 읽기 위한 입력 스트림이에요.

출처: Java API Reference

본문

public class ZipInputStream extends InflaterInputStream

ZIP 엔트리 읽기

getNextEntry() 메서드는 다음 ZIP 파일 엔트리(LOC 헤더 레코드)를 읽고 스트림을 엔트리의 파일 데이터 위치에 놓아요. 파일 데이터는 readreadAllBytes() 같은 메서드로 읽을 수 있어요.

Path jar = Path.of("foo.jar");
try (InputStream is = Files.newInputStream(jar);
     ZipInputStream zis = new ZipInputStream(is)) {
    ZipEntry ze;
    while ((ze = zis.getNextEntry()) != null) {
        var bytes = zis.readAllBytes();
        System.out.printf("Entry: %s, bytes read: %s%n", ze.getName(), bytes.length);
    }
}

참고로 LOC 헤더는 ZIP 엔트리에 대한 메타데이터를 담지만, ZipInputStream은 엔트리의 CEN(중앙 디렉터리) 헤더를 읽지 않으므로 외부 파일 속성 같은 메타데이터에는 접근할 수 없어요.

주요 생성자

  • ZipInputStream(InputStream in) — 기본 문자셋으로 ZIP 입력 스트림을 생성해요.
  • ZipInputStream(InputStream in, Charset charset) — 지정된 문자셋으로 생성해요.

주요 메서드

  • getNextEntry() — 다음 ZIP 엔트리를 읽어요. 없으면 null을 반환해요.

  • closeEntry() — 현재 ZIP 엔트리를 닫고 다음 엔트리를 읽을 수 있게 해요.

  • read(byte[] b, int off, int len) — 현재 엔트리의 데이터를 읽어요.

  • available() — 현재 엔트리에서 읽을 수 있는 남은 바이트 수를 반환해요.

  • close() — 입력 스트림을 닫아요.

  • 도입 시점(Since): 1.1

더 알아보기 (Learn more)