//需求:删除一个有内容的文件夹。
package day15;
import java.io.File;
public class DiGui {
public static void main(String[] args) {
shanChu("D:\\Eclipse\\day15\\新建文件夹");
}
public static void shanChu(String string) {
// TODO Auto-generated method stub
File file=new File(string);
File[] files=file.listFiles();
for (File file1:files) {
if(file1.isDirectory()){
shanChu(file1.toString());
System.out.println(file1.getName()+"---"+file1.delete());
}
else{
System.out.println(file1.getName()+"---"+file1.delete());
}
System.out.println(file.getName()+"---"+file.delete());
}
}
}
以上是自己写的代码,可以实现功能,可是过程不完美,控制台显示
3---true
2---false
3.txt---true
2---true
2---false
1---false
2.txt---true
1---true
1---false
新建文件夹---false
1.txt---true
新建文件夹---true
为什么会有false发生?哪里出了问题?
毕老师的代码没有false发生。这是为啥呢?
package cn.itcast.io.p1.file.test;
import java.io.File;
/*
* 删除一个带内容的目录。
*
* 原理:必须从最里面往外删。
* 需要进行深度遍历。
*
*
*
*/
public class RemoveDirTest {
/**
* @param args
*/
public static void main(String[] args) {
File dir = new File("e:\\demodir");
// dir.delete();
removeDir(dir);
}
public static void removeDir(File dir) {
File[] files = dir.listFiles();
for(File file : files){
if(file.isDirectory()){
removeDir(file);
}else{
System.out.println(file+":"+file.delete());
}
}
System.out.println(dir+":"+dir.delete());
}
}
|