ZipOutputStream 压缩后文件大小不对
原始代码
final File tempFile = File.createTempFile("apply", ".zip");
try (ZipOutputStream out = new ZipOutputStream(Files.newOutputStream(Paths.get(tempFile.getPath())))) {
final List<Apply> beanList = selectList();
for (PjApplyBean bean : beanList) {
if (StringUtils.isBlank(bean.getUrl())) {
continue;
}
try {
final byte[] downloadBytes = HttpUtil.downloadBytes(fileDefaultProperties.getUrl() + bean.getUrl());
out.putNextEntry(new ZipEntry(bean.getFileName()));
out.write(downloadBytes);
} catch (Exception e) {
LOGGER.info("下载失败:" + bean.getUrl(), e);
}
}
} finally {
FileUtil.del(tempFile);
}
缺少
out.closeEntry()
final File tempFile = File.createTempFile("apply", ".zip");
try (ZipOutputStream out = new ZipOutputStream(Files.newOutputStream(Paths.get(tempFile.getPath())))) {
final List<Apply> beanList = selectList();
for (PjApplyBean bean : beanList) {
if (StringUtils.isBlank(bean.getUrl())) {
continue;
}
try {
final byte[] downloadBytes = HttpUtil.downloadBytes(fileDefaultProperties.getUrl() + bean.getUrl());
out.putNextEntry(new ZipEntry(bean.getFileName()));
out.write(downloadBytes);
out.closeEntry();
} catch (Exception e) {
LOGGER.info("下载失败:" + bean.getUrl(), e);
}
}
} finally {
FileUtil.del(tempFile);
}
处理后文件大小正常了,但是解压报错
最后处理
final File tempFile = File.createTempFile("apply", ".zip");
try (ZipOutputStream out = new ZipOutputStream(Files.newOutputStream(Paths.get(tempFile.getPath())))) {
final List<Apply> beanList = selectList();
for (PjApplyBean bean : beanList) {
if (StringUtils.isBlank(bean.getUrl())) {
continue;
}
try {
final byte[] downloadBytes = HttpUtil.downloadBytes(fileDefaultProperties.getUrl() + bean.getUrl());
out.putNextEntry(new ZipEntry(bean.getFileName()));
out.write(downloadBytes);
out.closeEntry();
} catch (Exception e) {
LOGGER.info("下载失败:" + bean.getUrl(), e);
}
}
// 完成
out.finish();
} finally {
FileUtil.del(tempFile);
}
缺少
out.finish()