Java 实现删除文件工具类
2024-10-19 02:19:32
工具代码
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();
} }
最新文章
- ROS中DDNS的使用
- Docker对于部署来说及其重要
- Iphone [Tab Bar实现多view切换,Picker,DataPicter实现
- Brocade,Cisco SAN Switch命令对比
- 博客搬家了,欢迎访问 http://blog.csdn.net/yinpengxiang/
- 给出一个长度为n的数列,请对于每一个数,输出他右边第一个比他大的数。n<;=100000.
- hihoCoder:#1079(线段树+离散化)
- ASP.NET项目从VS2008迁移至VS2010或2012编译不过的问题
- Codeforces Round #274 (Div. 1) A. Exams 贪心
- lua string 库
- STC12C5201AD AD采样+串口发送模板
- 【Windows Phone设计与用户体验】关于移动产品的Loading用户体验的思考
- springMVC+Mybatis(使用AbstractRoutingDataSource实现多数据源切换时)事务管理未生效的解决办法
- leetcode — linked-list-cycle-ii
- python3 json模块
- 技术简历这样写,才能得到BAT面试官的青睐
- 【BZOJ5471】[FJOI2018]邮递员问题(动态规划)
- >;>;>;>;>;>;>;>; [ovs][libvirt] virt-xml ovs-vsctl
- Python Install for windows X64
- oracle 序列 视图 索引 同义词
热门文章
- 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
- jquery即时获取上传文件input file文件名
- jstl标准标签库 常用标签
- 数组中出现次数超过一半的数字(python)
- m文件转换c代码
- 记录----第一次使用BFS(广度搜索)学习经验总结
- RFC
- VS中程序包错误,引用错误该如何解决
- mybatis的Sql语句打印
- Linux下搭建ftp服务