java 여러파일 압축 다운로드

우리는 물론 먼저 디스크에서 파일에 액세스 할 수 있습니다 – 살펴 보자 : 이것은 자바에서 ZipOutputStream을 사용하여 여러 파일에서 zip 파일을 만드는 방법의 예입니다. 프로그램에서 는 모든 파일 및 디렉터리를 보관하기 위해 디렉터리 구조를 통과해야 합니다. 디렉터리인 경우 해당 항목을 보관하는 것 외에 파일의 경우 해당 항목을 보관하는 경우에도 파일의 내용을 스트림에 기록합니다. 아래 예는 zip 파일을 만들고 사용자가 다운로드할 수 있도록 생성된 zip 파일을 보내는 방법을 보여 주는 서발입니다. 압축 프로세스는 이 클래스의 zipFiles 메서드에 의해 수행됩니다. 감사 솔루션은 완벽하게 작동하지만 아파치 공용 압축 라이브러리에서 하위 폴더를 포함하는 폴더를 다운로드하려면 두 개의 파일은 타르 아카이브를 만드는 데 사용됩니다. 이 빠른 자습서에서는 파일을 아카이브에 압축하는 방법과 Java에서 제공하는 핵심 라이브러리를 사용하여 아카이브의 압축을 해제하는 방법에 대해 설명합니다. 타르에 여러 파일을 보관한 다음 GZIP으로 압축하기 위해 여기에 주어진 자바 프로그램은이 경로에서 다운로드 할 수있는 아파치 공용 압축 라이브러리를 사용합니다 https://commons.apache.org/proper/commons-compress/download_compress.cgi. 이 예제에서는 ZIP 파일 형식으로 파일을 작성하기 위한 출력 스트림 필터를 구현하는 ZipOutputStream을 사용하여 여러 파일에서 zip 파일을 만드는 방법을 보여 줍니다.

즉, ZipOutputStream을 사용 하 여 여러 파일에서 zip 파일을 만들 려면 해야 합니다:이 자습서는 압축 및 압축 풀기 작업의 작업에 Java 라이브러리를 간단 하 게 사용 하는 방법을 설명 합니다. 이 솔루션은 바이트[] zip = zipFiles(디렉터리, 파일)가 있기 때문에 대용량 파일에서는 작동하지 않습니다. 그것에. 결과 파일은 메모리에 맞아야 합니다. 서볼렛 출력을 직접 사용하는 것을 선호합니다. ZipOutputStream zos = 새 ZipOutputStream(response.getOutputStream()); 이렇게 하면 메모리를 적게 소비하게 됩니다. 이 예제에서는 test1.txt라는 파일을 압축된 압축.zip이라는 아카이브된 파일로 압축합니다. 다음으로 여러 파일을 하나의 zip 파일로 압축하는 방법을 살펴보겠습니다. 우리는 멀티 압축.zip으로 test1.txt 및 test2.txt를 압축합니다 : 안녕하세요 나는 10 txt 파일을 포함하는 하나의 URL을 가지고있다. 어떻게 모든 파일을 함께 다운로드하고 한 번에 저장할 수 있습니다.

위의 코드는 로컬 시스템에 zip의 모든 파일을 다운로드합니다. 경로가 있는 파일 이름을 얻기 위한 비즈니스 논리가 있으면 MultiValueMap을 사용하여 fileName을 저장할 수 있습니다. GZIP은 일반적으로 자바에서 GZIP 형식을 사용하여 여러 파일을 압축하려는 경우, GZIP 형식으로 단일 파일을 압축하는 데 사용되는 것은 두 단계 과정입니다; 이 게시물에서는 Java에서 타르 파일을 만들어 Java에서 gzip을 사용하여 여러 파일을 압축하는 이 모든 과정을 볼 수 있으며 따라서 .tar.gz 아카이브를 만듭니다. Java 프로그램에 사용되는 디렉토리 구조는 아래와 같이, 두 개의 하위 디렉토리 문서와 인쇄및 4 개의 파일을 갖는 부모 디렉토리 테스트가 있습니다 – 또 다른 키 포인트는 newFile() 메서드에서 볼 수 있습니다. 이러한 메서드는 대상 폴더 외부의 파일 시스템에 파일을 쓰지 않도록 합니다. 이 취약점을 Zip Slip이라고 하며 여기에서 자세한 내용을 확인할 수 있습니다. @Taywin, 당신이 제안 한대로 라인을 추가, 그것은 출력에 어떤 변화를 초래하지 않았다.