------- android培训、java培训、期待与您交流! ----------
需求:
列出指定目录下的的所有文件盒目录,包括子目录中的目录和文件
对于目录中还有目录的指定文件夹,只要使用同一个列出目录功能的函数即可
即是函数本身调用本身,称之为递归调用
例子:
import java.io.* class FileDemo{ public static void main(String argsp[]){ File dir = new File("D:\\abc"); showDir(dir); } public static void showDir(File dir){ System.out.println(dir); File[] files = dir.listFiles(); for(int i=0;i<files.length;i++){ if(files[i].isDirectory()) showDir(files[i]); else System.out.println(files[x]); } } }
递归注意事项:
1,限定条件
2,递归的次数 尽量避免内存溢出(递归次数比较多的话 内存溢出)
其中listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
如果要遍历目录中后缀名为同一类文件的话 可以使用listFiles(FilenameFilter filter) 这个方法
需求 : 删除一个带内容的目录
原理: 删除目录从子目录开始 从里往外删除 也需要用到递归调用
import java.io.*
class FileDemo_2{
public static void main(String argsp[]){
File dir = new File("D:\\test");
removeDir(dir);
}
public static void removeDir(File dir){
File[] files = dir.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isDirectory())
removeDir(files[i]);
else
files[i].delete();
}
dir.delete();
}
}
注意:平常有些文件夹是删不掉的,当文件夹里有隐藏文件 或 受系统保护的文件,可以在前面添加
一个判断条件,判断文件时候隐藏!