注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

Java递归删除目录办法  

2017-10-14 07:53:22|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在做项目时,经常有需要删除用户创建的一些目录,因为目录里面可能包含文件,直接删除目录有时会出错,还需要递归删除。目前的做法有三种,下面来看看具体的做法:
1)自己写代码来递归删除,相应的方法如下【效率不高】:

public static boolean delDir(String filepath) throws IOException { File f = new File(filepath);// 定义文件路径 boolean flag=false; //文件删除状态标记 if(!f.exists()) return flag; //文件不存在直接返回假 if (f.isFile()) { flag=f.delete(); //是文件直接删除 }else if(f.isDirectory()){ if (f.listFiles().length == 0){ flag=f.delete(); //若目录下没有文件则直接删除 } else { //若有则把文件放进数组,并判断是否有下级目录 File delFile[] = f.listFiles(); int i = f.listFiles().length; for (int j = 0; j < i; j++) { if (delFile[j].isDirectory())delDir(delFile[j].getAbsolutePath());// 递归调用del方法并取得子目录路径 flag=delFile[j].delete();// 删除文件 } } } return flag; }

2)调用系统命令来删除【这里还可以取巧使用File.separator.equals("/")来判断LINUX及类UNIX环境】:

public static void delDir(String path) {
String LINUX_DEL_ALL="rm -fr ";
String WINDOWS_DEL_ALL="rmdir /s /q ";
String osname = System.getProperties().getProperty("os.name");
File f = new File(path);// 定义文件路径
if(!f.exists()) return; //文件不存在直接返回
Process proc=null;
try {
if(osname.startsWith("Windows")){
//WIN下执行
proc=Runtime.getRuntime().exec(WINDOWS_DEL_ALL+path);
}else{
//其它LINUX,类UNIX执行
proc = Runtime.getRuntime().exec(LINUX_DEL_ALL+path);
}
}catch (IOException e) {
e.printStackTrace();
}finally{
if(proc!=null)proc.destroy();
}
}

3)直接使用apache开源的包中的方法,引入commons-io.jar包。

public static void delDir(String path) {
File f = new File(path);// 定义文件路径
if(!f.exists()) return; //文件不存在直接返回假
try {
org.apache.commons.io.FileUtils.deleteDirectory(f);//删除目录
} catch (IOException e) {
//异常
e.printStackTrace();
}
}

使用请注意:删除文件夹时有可能会遇到权限问题,未必都能删除成功,所以请捕获相应异常做相关处理。



  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017