2014-02-10 1 views
0

두 개의 파일이 들어있는 GZIP 아카이브가 tar 유틸리티로 압축되어 있습니다. 둘 다 메모리로 추출해야합니다. 그래서 결과적으로 2 개의 byte 배열을 가져와야합니다. 그러나 GZIPInputStream 사용법의 모든 예제는 바이트를 읽고 출력 스트림에 저장하므로 결과적으로 두 개의 byte[] 배열을 얻는 방법을 모릅니다.tar.gz 파일에서 두 개의 파일을 추출하여 메모리에 넣습니다.

+1

"내부에 두 개의 파일이있는 GZIP 아카이브가 있습니다." GZIP은 그렇게 작동하지 않습니다. 그것은 여러 파일의 개념을 가지고 있지 않습니다. 그것은 단지 압축 된 데이터입니다. –

+0

@JonSkeet 내 실수. 질문을 업데이트했습니다. – Lingviston

+0

tar.gz 파일 또는 tgz 파일이 실제로 있다는 것을 의미합니까? 그렇다면 추출의 gzip 부분을 타르 부분에서 분리해야합니다. gzip 파일의 압축을 풀면 tar 파일이 생기고 두 파일을 얻을 수 있습니다. –

답변

0

libarchive은 필요한 것을 처리해야합니다. 여기가 무엇인지 설명하는 자신의 홈 페이지에서 발췌 한 것입니다 :

libarchive


멀티 포맷 아카이브 및 압축 라이브러리

소스 분포가 libarchive 라이브러리를 포함하고는, bsdtar 및 bsdcpio 명령 줄 프로그램, 전체 테스트 제품군 및 설명서 :

안정 버전 : libarchive-3.1.2.tar.gzlibarchive-3.1.2.zip (1월 13일 이후, 2013)
레거시 출시 :의 다양한

  • 지원 : libarchive-2.8.5.zip

    libarchive 라이브러리 기능 (2011년 9월 3일부터) 아카이브 및 압축 형식.

  • tar.gz와 같은 아카이브/압축 조합을 포함한 강력한 자동 형식 탐지.

  • 고성능을위한 zero-copy 내부 아키텍처.

  • 스트리밍 아키텍처는 아카이브 크기의 모든 제한을 없애고 특정 형식에 따라 항목 크기가 제한됩니다.

  • 프로그램이 정적으로 링크 될 때 팽창을 최소화하는 코드입니다.

  • 새 포트의 정확성을 확인하기위한 확장 테스트 제품군.

  • (FreeBSD 등 리눅스, 솔라리스 등 포함) 대부분의 POSIX 계열 시스템에

  • 작품 Cygwin에서,는 MinGW, 및 Visual Studio를 포함하여 Windows를 지원합니다.

    • 타르를 포함한 다양한 포맷을 읽고, 인원 :

    bsdtarbscpio 명령 줄 유틸리티는 다른 타르와 CPIO 구현과 피쳐 및 성능 경쟁력 , cpio, zip, xar, lha, ar, 택시, mtree, rar 및 ISO 이미지.

  • tar, pax, cpio, zip, xar, ar, ISO, mtree 및 shar 아카이브를 작성합니다.

  • gzip, bzip2, lzip, xz, lzma 또는 compress로 압축 된 아카이브를 자동으로 처리합니다.

  • 고유 한 형식 변환 기능.

+1

이 링크가 질문에 대답 할 수 있지만 여기에 답변의 핵심 부분을 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. –

+0

libarchive를 사용하기 위해 _how_에 "필수적인 부분"을 제공하고 링크가 사라지면 필수적인 부분이 쓸모 없게됩니다. 링크의 변동성을 이해하지만 링크가 사라지는 경우 응답을 개선하는 방법을 알지 못합니다. –

+0

그건 사실이 아닙니다. 링크가 변경 될 수 있습니다. 깨진 링크는 제품이 더 이상 존재하지 않거나 쓸모 없게되었음을 의미하지 않습니다. 걱정하지 마세요, 나는 앞으로 나아가서 당신의 대답을 편집하여 홈 페이지의 모든 필수 부분을 추가하여 미래 방문자에게 libarchive가 무엇인지 설명합니다. –

관련 문제