SpringBoot导入压缩文件、解压、删除指定目录下的所有目录、查找指定目录下所有以制定后缀结尾的文件、创建目录

①导入压缩文件 

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;
	}

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值