//上传文件到服务器
String tempPath = req.getSession().getServletContext().getRealPath("webResources/templet/"); String filename = importFile.getOriginalFilename(); // @RequestParam("importFile") CommonsMultipartFile importFile 作为参数传递后台
//解压Zip文件
String zipPath = tempPath + File.separator + filename;
String zipFolder = filename.substring(0, filename.length() - 4);
String decompressPath = tempPath + File.separator + zipFolder; List<String> filePathList =readByApacheZipFile(zipPath, decompressPath);
@SuppressWarnings("unchecked")
public List<String> readByApacheZipFile(String zipPath, String decompressPath) throws IOException,
FileNotFoundException, ZipException {
File f = new File(decompressPath);
if (!f.exists()) {
f.mkdirs();
}
List<String> filePathList = new ArrayList<String>();
ZipFile zf = new ZipFile(zipPath, "GBK");//支持中文
Enumeration<ZipEntry> e = zf.getEntries();
while (e.hasMoreElements()) {
ZipEntry ze2 = (ZipEntry) e.nextElement();
String entryName = ze2.getName();
String path = decompressPath + "/" + entryName;
if (ze2.isDirectory()) {
System.out.println("正在创建解压目录 - " + entryName);
File decompressDirFile = new File(path);
if (!decompressDirFile.exists()) {
decompressDirFile.mkdirs();
}
} else {
System.out.println("正在创建解压文件 - " + entryName);
String fileDir = path.substring(0, path.lastIndexOf("/"));
File fileDirFile = new File(fileDir);
if (!fileDirFile.exists()) {
fileDirFile.mkdirs();
}
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path));
BufferedInputStream bi = new BufferedInputStream(zf.getInputStream(ze2));
byte[] readContent = new byte[1024];
int readCount = bi.read(readContent);
while (readCount != -1) {
bos.write(readContent, 0, readCount);
readCount = bi.read(readContent);
}
bos.close();
String curDateStr = PortalUtils.getCurrentDateTimeString();
String renamePath = decompressPath + "/" + entryName.substring(0, entryName.lastIndexOf("/") + 1)
+ curDateStr + "_" + entryName.substring(entryName.lastIndexOf("/") + 1, entryName.length());
File ff = new File(path);
ff.renameTo(new File(renamePath));
filePathList.add(renamePath);
}
}
zf.close();
return filePathList;
}