①导入压缩文件
MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
String sParamFileName = mRequest.getFileNames().hasNext() ? mRequest.getFileNames().next() : null;
if (CMyString.isEmpty(sParamFileName)) {
return CtlStatus.failed().put("state", "文件不存在");
}
MultipartFile mFile = mRequest.getFile(sParamFileName);
String sLocalName = mFile.getOriginalFilename(); // 获取文件名
/* 获取文件扩展名 */
String sExt = UploadFileUtil.getExt(sLocalName);
// 根据文件头获取的文件类型
/* 检查文件类型 */
String sHeaderExt = UploadFileUtil.getExtByFileHeader(mFile.getInputStream());
if ("zip".indexOf(sExt) < 0 || !sHeaderExt.equals("zip")) {
return CtlStatus.failed("只能上传zip文件!");
}
/* 文件是否为空 */
if (mFile.getSize() == 0) {
return CtlStatus.failed("上传文件内容不能为空");
}
String sFileName = UploadFileUtil.getNextFileName(sExt);// 获取系统可用文件名
/* 文件存储在容器中的绝对路径 */
String saveFilePathName = zipUploadPath;//自定义路径
/* 存储上传文件 */
fileMkdirs(new File(saveFilePathName));
saveFilePathName += sFileName;
File savefile = new File(saveFilePathName);
fileMkdirs(savefile);
FileOutputStream fos = new FileOutputStream(savefile);
fos.write(mFile.getBytes());
if (fos != null) {
fos.close();
} // 压缩文件上传完毕
②解压压缩文件到指定目录
private void decompression(String zipPath, String aimPath) throws ZipException {
ZipFile zfile = new ZipFile(zipPath);
zfile.setFileNameCharset("UTF-8");// 在GBK系统中需要设置
if (!zfile.isValidZipFile()) {
throw new ZipException("压缩文件不合法,可能已经损坏!");
}
File file = new File(aimPath);
if (file.isDirectory() && !file.exists()) {
file.mkdirs();
}
zfile.extractAll(aimPath);
}
③判断目录或文件是否存在,没有则创建
private void fileMkdirs(File file) throws IOException {
if (file.isDirectory() && !file.exists()) {
file.mkdirs();
} else if (file.isFile() && !file.exists()) {
file.createNewFile();
}
}
④查找所有.html结尾的文件,并添加到集合htmls中记录
public void findHtmlFile(String path) {
File dir = new File(path);
File[] subFiles = dir.listFiles(); // 获取e盘下所有的文件或文件夹对象
if (null != subFiles) {
for (File subFile : subFiles) {
if (subFile.isDirectory()) // 文件夹则递归寻找,后缀为html文件则输出名字
findHtmlFile(subFile.getAbsolutePath());
else if (subFile.isFile() && subFile.getName().endsWith(".html"))
htmls.add(subFile.getAbsolutePath());
}
}
}
⑤删除指定目录下的所有目录
public static boolean deleteDir(String path) {
File file = new File(path);
if (!file.exists()) {// 判断是否待删除目录是否存在
return false;
}
String[] content = file.list();// 取得当前目录下所有文件和文件夹
for (String name : content) {
File temp = new File(path, name);
if (temp.isDirectory()) {// 判断是否是目录
deleteDir(temp.getAbsolutePath());// 递归调用,删除目录里的内容
temp.delete();
} else {
temp.delete();// 删除文件
}
}
return true;
}