工具代码

 package com.wangbo;

 import java.io.File;

 /**
* 删除目录或文件工具类
* @author wangbo
* @date 2017-04-11 15:59:30
*/
public class FileDelUtil { /**
* 入口方法
* 根据路径删除指定的目录或文件,无论存在与否
* @param path 要删除的目录或文件路径
* @return 删除成功返回 true,否则返回 false。
*/
public static boolean deleteFolder(String path) {
//验证字符串是否为正确路径名的正则表达式
String regex = "[A-Za-z]:\\\\[^:?\"><*]*";
if (path == null || !path.matches(regex)) {
System.out.println("path=" + path);
return false;
}
File file = new File(path);
//判断目录或文件是否存在
if (!file.exists()) {
return false;
} else {
//判断是否为文件
if (file.isFile()) {
return deleteFile(path);
} else {
return deleteDirectory(path);
}
}
} /**
* 删除单个文件
* @param path 被删除文件的文件名
* @return 单个文件删除成功返回true,否则返回false
*/
private static boolean deleteFile(String path) {
File file = new File(path);
//路径为文件且不为空则进行删除
if (file.isFile() && file.exists()) {
file.delete();
return true;
}
return false;
} /**
* 删除目录(文件夹)以及目录下的文件
* @param path 被删除目录的文件路径
* @return 目录删除成功返回true,否则返回false
*/
private static boolean deleteDirectory(String path) {
//如果path不以文件分隔符结尾,自动添加文件分隔符
if (!path.endsWith(File.separator)) {
path = path + File.separator;
}
File dirFile = new File(path);
//如果dir对应的文件不存在,或者不是一个目录,则退出
if (!dirFile.exists() || !dirFile.isDirectory()) {
return false;
}
boolean flag = true;
//删除文件夹下的所有文件(包括子目录)
File[] files = dirFile.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {//删除子文件
flag = deleteFile(files[i].getAbsolutePath());
}else { //删除子目录
flag = deleteDirectory(files[i].getAbsolutePath());
}
if (!flag) return flag;
}
//删除当前目录
return dirFile.delete();
} }

最新文章

  1. ROS中DDNS的使用
  2. Docker对于部署来说及其重要
  3. Iphone [Tab Bar实现多view切换,Picker,DataPicter实现
  4. Brocade,Cisco SAN Switch命令对比
  5. 博客搬家了,欢迎访问 http://blog.csdn.net/yinpengxiang/
  6. 给出一个长度为n的数列,请对于每一个数,输出他右边第一个比他大的数。n&lt;=100000.
  7. hihoCoder:#1079(线段树+离散化)
  8. ASP.NET项目从VS2008迁移至VS2010或2012编译不过的问题
  9. Codeforces Round #274 (Div. 1) A. Exams 贪心
  10. lua string 库
  11. STC12C5201AD AD采样+串口发送模板
  12. 【Windows Phone设计与用户体验】关于移动产品的Loading用户体验的思考
  13. springMVC+Mybatis(使用AbstractRoutingDataSource实现多数据源切换时)事务管理未生效的解决办法
  14. leetcode — linked-list-cycle-ii
  15. python3 json模块
  16. 技术简历这样写,才能得到BAT面试官的青睐
  17. 【BZOJ5471】[FJOI2018]邮递员问题(动态规划)
  18. &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; [ovs][libvirt] virt-xml ovs-vsctl
  19. Python Install for windows X64
  20. oracle 序列 视图 索引 同义词

热门文章

  1. hadoop的job执行在yarn中内存分配调节————Container [pid=108284,containerID=container_e19_1533108188813_12125_01_000002] is running beyond virtual memory limits. Current usage: 653.1 MB of 2 GB physical memory used
  2. jquery即时获取上传文件input file文件名
  3. jstl标准标签库 常用标签
  4. 数组中出现次数超过一半的数字(python)
  5. m文件转换c代码
  6. 记录----第一次使用BFS(广度搜索)学习经验总结
  7. RFC
  8. VS中程序包错误,引用错误该如何解决
  9. mybatis的Sql语句打印
  10. Linux下搭建ftp服务