package com.pb.io; import java.io.File; import java.io.IOException; public class FileUtils { /* * 列出指定目录下(包括其子目录的所有文件) */ public static void listDirectoryFile(File dir) throws IOException{ if(!dir.exists()){ throw new IllegalArgumentException("目录:"+dir+"不存在"); } if(!dir.isDirectory()){ throw new IllegalArgumentException(dir+"不是目录"); } /*String[] filenames= dir.list(); for (String string : filenames) { System.out.println(string); }*/ File[] files=dir.listFiles() ; if(files.length>0 && files!=null){ for (File file : files) { if(file.isDirectory()){ listDirectory(file); } else{ System.out.println(file); } } } } }
老师讲的这里使用的递归操作,“listDirecrory(file)”方法递归调用已经定义好的“listDirecrory(file)”方法。
你这段程序定义的方法是“listDirectoryFile(File dir)”,下面调用的也必须是“listDirectoryFile(file)”方法,这才是递归调用!
这个是自己定义的方法,以为当出现子目录的时候重新调用方法,而不是java 的API有这个方法,是你自己定义的。
你定义的是这个方法listDirectoryFile
用到是这个方法listDirectory 当然会报错,说你没定义这个方法
你解决了吗
你的名字错了 应该是listDirectoryFile
递归调用时file会调到最后一个文件二不是文件夹,则会触发class前面if(!dir.isDirectory()) 报错,
报什么错的,贴一下报错信息