import java.io.File;
import java.util.ArrayList;public class FileTest {
 private static ArrayList<String> filelist = new ArrayList<String>();
 
 public static void main(String[] args) throws Exception {
    
    String filePath = "E://Struts2";
    getFiles(filePath);
 } 
 /*
  * 通过递归得到某一路径下所有的目录及其文件
  */
 static void getFiles(String filePath){
  File root = new File(filePath);
    File[] files = root.listFiles();
    for(File file:files){     
     if(file.isDirectory()){
      /*
       * 递归调用
       */
      getFiles(file.getAbsolutePath());
      filelist.add(file.getAbsolutePath());
      System.out.println("显示"+filePath+"下所有子目录及其文件"+file.getAbsolutePath());
     }else{
      System.out.println("显示"+filePath+"下所有子目录"+file.getAbsolutePath());
     }     
    }
 }
}

解决方案 »

  1.   


    import java.io.*;
    public class TestSearch{
    public static void main(String[] args)throws Exception{
    File dir = new File("c:/");
    search(dir);
    } public static void search(File dir){ //遍历目录
    File[] files = dir.listFiles(AllFilter.getOnly()); //文件
    File[] dirs = dir.listFiles(DirFilter.getOnly()); //子目录
    if(files == null || dirs == null) return; for(File file : files){
    System.out.println(file); //遍历输出文件名
    }
    for(File d : dirs){
    search(d); //是目录则再次调用search方法
    }
    }
    }//用于子目录的过滤器
    class DirFilter implements FileFilter{
    private DirFilter(){}
    private static DirFilter only = new DirFilter();
    public static DirFilter getOnly(){
    return only;
    }
    @Override
    public boolean accept(File file){
    return file.isDirectory();
    }
    }//用于文件的过滤器
    class AllFilter implements FileFilter{
    private AllFilter(){}
    private static AllFilter only = new AllFilter();
    public static AllFilter getOnly(){
    return only;
    }
    @Override
    public boolean accept(File file){
    return file.isFile();
    }
    }