删除一个带有文件的文件夹

普通删除文件夹的方法:

File s= new File("D:\\shanchu");
System.out.println(s.delete());

但这仅限于空的文件夹,当文件夹有内容的时候,结果为false。

当文件夹中有内容,我们只能从里往外删除,而且不知道有多少级目录。如果文件夹底下是文件,直接删除,有文件夹则继续向里边走。

很明显这是一个递归算法。

建立一个用于递归的方法:

public static void remove(File s) {
File[] files=s.listFiles();                //列出当前目录下的文件以及文件夹
for(File file:files) {                       
if(file.isDirectory()) {                   //判断是否是目录
remove(file);                              //继续递归

}
else {
System.out.println(file+":"+file.delete());     //删除文件,用打印语句验证是否删除成功,是否有误删。
}

}

为了方便直观把删除的东西都显示出来

System.out.println(s+":"+s.delete());

部分结果如下:

D:\shanchu\ass4\.classpath:true
D:\shanchu\ass4\.project:true
D:\shanchu\ass4\.settings\org.eclipse.jdt.core.prefs:true
D:\shanchu\ass4\.settings:true
D:\shanchu\ass4\bin\ass4\DrawPanel.class:true
D:\shanchu\ass4\bin\ass4\MyCircle.class:true

回过头来看这个程序,为了避免异常的发生,我们不妨加上if判断语句

if(s.exists&&s.isDirectory)来确保文件夹存在而且是个目录。

猜你喜欢

转载自www.cnblogs.com/zhc8016/p/10587599.html