要求:
文件夹的位置为:D盘,名称为myjava(可替换成电脑现有的文件夹);
需求为获取该文件夹内的文件目录,以及目录下的子文件;
import java.io.File; public class test { public static void main(String[] args) { //搜索D:\myjava 所有目录和子文件 File dir = new File("D:\\myjava"); printDir(dir); } //构造一个printDir方法 public static void printDir(File dir){ //获取子文件和目录 File[] files = dir.listFiles(); for (File f:files){ //判断是文档还是目录 if (f.isFile()){ //判断是不是文件,如果是文件,就输出文件路径 System.out.println("文件名:"+f.getAbsolutePath()); }else{ //代表是目录,同样也输出目录绝对路径 System.out.println("目录"+f.getAbsolutePath()); //继续变能力,访问目录下的子文件和子目录,递归调用 printDir(f); } } } }
运行结果:
总结:
这个例子的关键在于遍历指定文件夹下的文件的方法应该怎么写;
创建File绝对路径对象dir;
listFile() 得到File类型的数组,File[] files = dir.listFiles(),用增强for循环进行遍历;
判断是否是文件isFile;
如果是文件,直接打印输出文件的绝对路径;
如果是文件夹,则打印文件夹的绝对路径,并在此调用方法本身,直到遍历到文件为止。
注意:D盘下的myjava文件夹中,还有子文件夹,所以要调用方法本身,继续遍历这个子文件夹下的文件,直到把所有文件的绝对路径都输出打印。
方法内部调用方法本身,这种用法叫递归。