问题场景: 由于需求指定 - 文件上传功能需要上传压缩包且需要读取压缩包里面的文件的内容。
样例代码:
接口:void uploadZip(MultipartFile file);
实现:
@Override
public void uploadZip(MultipartFile file) {
if (file == null) {
return ;
}
try {
// 获取六
InputStream input = file.getInputStream();
//获取ZIP输入流 指定字符集为 GBK
ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(input), Charset.forName("GBK"));
//定义ZipEntry置为null,避免由于重复调用zipInputStream.getNextEntry造成的不必要的问题
ZipEntry zipFile;
while ((zipFile = zipInputStream.getNextEntry()) != null) {
// 文件名称
String fileName = zipFile.getName();
long fileSize = zipFile.getSize();
// 最后修改时间
FileTime time = zipFile.getLastModifiedTime();
log.info("文件名称"+fileName + " 文件大小"+fileSize+" 最后修改时间" + time);
//读取
BufferedReader br = new BufferedReader(new InputStreamReader(zipInputStream, Charset.forName("GBK")));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
zipInputStream.closeEntry();
input.close();
} catch (Exception e) {
log.error("异常");
}
}