Spring 用于创建固定大小的 zip 文件的批处理程序

Spring Batch program to create the fixed size zip file

我有一个设计 issue.I 想要使用 spring 批处理创建一个 10 MB 的 zip 文件。但不确定我可以 select 为块大小取什么值。块大小是预定值。假设我决定该块大小为 100。所以我读取了 100 个文件并尝试创建一个 zip 文件。但是,如果 zip 文件大小仅包含 99 个文件就达到 10 MB 怎么办?剩下的 1 个文件会怎样?

此致, 拉吉

我有一个类似的用例。我所做的是创建一个创建有限大小 (10MB) 的 zip 文件的服务。例如,如果我有 99 个达到 10MB 的文件,该服务会将 zip 分成两部分:file_to_zip.zip 和 file_to_zip.z01

public List<File> createSplitFile(List<String> resourcesToZip, String directory, Long maxFileSize, String zipFileName) {
    List<File> splitZipFiles = null;
    try {
        ZipFile zipFile = new ZipFile(directory + zipFileName);
        Iterator<String> iterator = resourcesToZip.iterator();
        List<File> filesToAdd = new ArrayList();
        while (iterator.hasNext()) {
            File file = new File(iterator.next());
            if (file.exists()) {
                filesToAdd.add(file);
            }
        }

        ZipParameters parameters = new ZipParameters();
        parameters.setCompressionMethod(CompressionMethod.DEFLATE);
        parameters.setCompressionLevel(CompressionLevel.NORMAL);

        zipFile.createSplitZipFile(filesToAdd, parameters, true, maxFileSize);
        splitZipFiles = zipFile.getSplitZipFiles();
    } catch (ZipException e) {
        LOG.error("Exception trying to compress statement file '{}'", e.getMessage());
    }
    return splitZipFiles;
}