How can I create multipart compressed zip file in java

只愿长相守 提交于 2020-01-01 09:19:31

问题


I need to compress a directory inside a zip (tar, gz, 7z, etc.) file. It's ok but I need to create multipart zip files connected to each other (like file1.part1.zip, file1.part2.zip)

How can i create multipart zip file in java? Each part must have a maximum size limit.


回答1:


Zip4j supports creation of split zip file. Here's a sample to create a split zip file (Sample taken from Zip4j examples package)

ZipFile.createZipFile(File sourceFile, ZipParameters parameters, boolean splitArchive, long splitLength) 

is the method to create a split zip file. boolean splitArchive has to be set to true in this case. You can set the maximum file size for each split file (z01, z02, etc) via long splitLength

import java.io.File;
import java.util.ArrayList;

import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;

public class CreateSplitZipFile {

    public CreateSplitZipFile() {

        try {
            // Initiate ZipFile object with the path/name of the zip file.
            ZipFile zipFile = new ZipFile("c:\\ZipTest\\CreateSplitZipFile.zip");

            // Build the list of files to be added in the array list
            // Objects of type File have to be added to the ArrayList
            ArrayList filesToAdd = new ArrayList();
            filesToAdd.add(new File("c:\\ZipTest\\sample.txt"));
            filesToAdd.add(new File("c:\\ZipTest\\myvideo.avi"));
            filesToAdd.add(new File("c:\\ZipTest\\mysong.mp3"));

            // Initiate Zip Parameters which define various properties such
            // as compression method, etc.
            ZipParameters parameters = new ZipParameters();

            // set compression method to store compression
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);

            // Set the compression level. This value has to be in between 0 to 9
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

            // Create a split file by setting splitArchive parameter to true
            // and specifying the splitLength. SplitLenth has to be greater than
            // 65536 bytes
            // Please note: If the zip file already exists, then this method throws an 
            // exception
            zipFile.createZipFile(filesToAdd, parameters, true, 10485760);
        } catch (ZipException e) {
            e.printStackTrace();
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        new CreateSplitZipFile();
    }

}


来源:https://stackoverflow.com/questions/18590362/how-can-i-create-multipart-compressed-zip-file-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!