锁定老帖子 主题:递归删除指定目录下所有文件及子目录
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (18)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-29
public class Main { public static void main(String[] args) { Main m = new Main(); m.deleteFile(new File("e:\\test\\")); } public void deleteFile(File file) { File[] temp = file.listFiles(); for(int i=0;i<temp.length;i++) { System.out.println(temp[i].getName()); if(temp[i].isDirectory()) { if(temp[i].listFiles().length!=0) this.deleteFile(temp[i]); this.deleteDir(temp[i]); }else { temp[i].delete(); } } } private void deleteDir(File file) { if(file.listFiles().length==0) file.getAbsoluteFile().delete(); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-04-29
发一个我写的相对直观点的。
/** * 删除此路径名表示的文件或目录。 * 如果此路径名表示一个目录,则会先删除目录下的内容再将目录删除,所以该操作不是原子性的。 * 如果目录中还有目录,则会引发递归动作。 * @param filePath * 要删除文件或目录的路径。 * @return 当且仅当成功删除文件或目录时,返回 true;否则返回 false。 */ public static boolean deleteFile(String filePath) { File file = new File(filePath); return deleteFile(file); } private static boolean deleteFile(File file){ File[] files = file.listFiles(); for(File deleteFile : files){ if(deleteFile.isDirectory()){ //如果是文件夹,则递归删除下面的文件后再删除该文件夹 if(!deleteFile(deleteFile)){ //如果失败则返回 return false; } } else { if(!deleteFile.delete()){ //如果失败则返回 return false; } } } return file.delete(); } |
|
返回顶楼 | |
发表时间:2010-04-30
用栈吧,不要用递归,递归有可能outofmemory的
|
|
返回顶楼 | |
发表时间:2010-04-30
public static boolean delete(File dir) { if (dir.isDirectory()) { File[] listFiles = dir.listFiles(); for (int i = 0; i < listFiles.length && delete(listFiles[i]); i++) { } } return dir.delete(); } |
|
返回顶楼 | |
发表时间:2010-05-01
smartinvoke 写道 用栈吧,不要用递归,递归有可能outofmemory的
有文件路径的长度限制,一般不可能到溢出那层。。 |
|
返回顶楼 | |
发表时间:2010-05-01
云中苍月 写道 public static boolean delete(File dir) { if (dir.isDirectory()) { File[] listFiles = dir.listFiles(); for (int i = 0; i < listFiles.length && delete(listFiles[i]); i++) { } } return dir.delete(); } 这个更简洁额,不过貌似是否不容易读? |
|
返回顶楼 | |
发表时间:2010-05-01
选择您需要装饰的文字, 按上列按钮即可添加上相应的标签
|
|
返回顶楼 | |
发表时间:2010-05-01
建议看下 apache commons-io
|
|
返回顶楼 | |
发表时间:2010-05-01
dwangel 写道 建议看下 apache commons-io
赞成!!!! |
|
返回顶楼 | |
发表时间:2010-05-01
我就纳闷了,2行代码能解决的事,要用递归、栈什么的吗?
|
|
返回顶楼 | |