普通删除文件夹的方法:
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:trueD:\shanchu\ass4\.settings\org.eclipse.jdt.core.prefs:trueD:\shanchu\ass4\.settings:trueD:\shanchu\ass4\bin\ass4\DrawPanel.class:trueD:\shanchu\ass4\bin\ass4\MyCircle.class:true回过头来看这个程序,为了避免异常的发生,我们不妨加上if判断语句
if(s.exists&&s.isDirectory)来确保文件夹存在而且是个目录。