문제

내가 원하는 프로그램을 실행하고 그것을 실행에서 읽을 출력하고 파이프의 출력으로 압축한 파일입니다.출력 프로그램의 매우 큰 될 수 있습니다 그래서 아이디어가지 너무 많이 보유 메모리에서-그냥을 보낼으로 우편에 그것을 얻는다.

도움이 되었습니까?

해결책

ZipOutputStream targetStream = new ZipOutputStream(fileToSaveTo);
ZipEntry entry = new ZipEntry(nameOfFileInZipFile);
targetStream.putNextEntry(entry);

byte[] dataBlock = new byte[1024];
int count = inputStream.read(dataBlock, 0, 1024);
while (count != -1) {
    targetStream.write(dataBlock, 0, count);
    count = inputStream.read(dataBlock, 0, 1024);
}

Otherwords:

  1. 을 만들 ZipOutputStream 을 제공,그것은 파일을 쓰고 싶습니다.
  2. 을 만들 ZipEntry,구성하는 파일에 있는 지퍼 파일입니다.즉을 열 때 myFile.zip 고,거기에 있는 3 개의 파일을 서있는 파일이 ZipEntry.

  3. 는 zipEntry 로 ZipOutputStream

  4. 만들기를 바이트 버퍼에 데이터를 읽습니다.
  5. 읽기 에서 inputStream 으로 귀하의 바이트 버퍼,그리고 기억합니다.
  6. 는 동안 수 없 -1,쓰기는 바이트 byffer 귀하의 zipStream.
  7. 읽기됩니다.

닫 스트림할 때 당신은 할 수 있습니다.을 포장하는 방법으로 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top