一、错误代码
生成excel文件方法:
@Override public void deleteHotSellingExcel() { File folder = new File(HOT_SELLING_PATH); File[] files = folder.listFiles(); for (int i = 0; i < files.length; i++) { File file = files[i]; String name = file.getName(); if(name.contains(EXCEL_SUFFIX)){ boolean delete = file.delete(); System.out.println("delete = " + delete); } } }
生成zip文件方法:
@Override public void generateHotSellingZip() { try { String zipPath = HOT_SELLING_PATH+"/"+hot_selling_name+ZIP_SUFFIX; ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipPath)); File folder = new File(HOT_SELLING_PATH); File[] files = folder.listFiles(); for (int i = 0; i < files.length; i++) { File file = files[i]; String name = file.getName(); if(name.contains(EXCEL_SUFFIX)){ zipOut.putNextEntry(new ZipEntry(name)); FileInputStream fis = new FileInputStream(file.getAbsoluteFile()); byte[] buffer = new byte[1024]; int length; while ((length = fis.read(buffer)) > 0) { zipOut.write(buffer, 0, length); } zipOut.closeEntry(); } } zipOut.close(); } catch (Exception e) { log.error("生成热销品压缩文件错误,错误详情:{}",e); throw new BizException(FAIL_CODE,"生成热销品压缩文件错误"); } }
主方法:
先生成excel之后删除excel,但是由于没有关闭fis的文件流,导致文件无法删除,因此关闭文件流即可
generateHotSellingZip(); deleteHotSellingExcel();
二、正确代码
@Override
public void generateHotSellingZip() {
try {
String zipPath = HOT_SELLING_PATH+"/"+hot_selling_name+ZIP_SUFFIX;
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipPath));
File folder = new File(HOT_SELLING_PATH);
File[] files = folder.listFiles();
for (int i = 0; i < files.length; i++) {
File file = files[i];
String name = file.getName();
if(name.contains(EXCEL_SUFFIX)){
zipOut.putNextEntry(new ZipEntry(name));
FileInputStream fis = new FileInputStream(file.getAbsoluteFile());
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
zipOut.write(buffer, 0, length);
}
zipOut.closeEntry();
fis.close();//加上了这个代码
}
}
zipOut.close();
} catch (Exception e) {
log.error("生成热销品压缩文件错误,错误详情:{}",e);
throw new BizException(FAIL_CODE,"生成热销品压缩文件错误");
}
}