import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* 將file壓縮zip文件
**/
public class FileUtils {
private static final Logger logger = LoggerFactory.getLogger(FileUtils.class);
/**
* file壓縮zip
* @param fileMap 壓縮文件map集合
* @param zipName zip文件名 放款資料推送 新生合同號_yyyyMMdd.zip 放款材料補傳 新生借據號_yyyyMMdd.zip
* @param localFilePath 上傳地址
* @return 無
*/
public static String compressZip(Map<String, File> fileMap, String zipName, String localFilePath) {
//文件id名組成 每個文件命名按照【類型_序號.文件類型】的方式。
// BEFORE_LOAN 放款前提交放款材料
// AFTER_LOAN 放款後補充放款材料
// String zipEntryName = "BEFORE_LOAN" + "_";
ZipOutputStream zipOutputStream = null;
FileOutputStream fileOutputStream = null;
FileInputStream fileInputStream = null;
try {
fileOutputStream = new FileOutputStream(new File(localFilePath + zipName));
zipOutputStream = new ZipOutputStream(fileOutputStream);
ZipEntry zipEntry = null;
List<String> strings = fileMap.keySet().stream().collect(Collectors.toList());
for (int i = 0; i < strings.size(); i++) {
String fileNmae = strings.get(i);
fileInputStream = new FileInputStream(fileMap.get(fileNmae));
zipEntry = new ZipEntry(fileNmae + "_" + (i + 1)+".jpg");
zipOutputStream.putNextEntry(zipEntry);
int len;
byte[] buffer = new byte[1024];
while ((len = fileInputStream.read(buffer)) > 0) {
zipOutputStream.write(buffer, 0, len);
}
fileInputStream.close();
}
zipOutputStream.closeEntry();
zipOutputStream.close();
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
logger.error("zip打包異常", e.getMessage());
return null;
}
return localFilePath + zipName;
}
}