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;
}
我有一个设计 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;
}