下面是网上找的代码。貌似只能在某一路径下查找。而我希望的是譬如对D盘内的每个文件夹中的每个文件都查找一遍。
最好还能实现对查找到的文件信息:如修改日期等一一输出。
新手初学,希望高手们能写个完整的代码参考一下,谢谢~import java.io.File;
import java.io.FileFilter;public class Test implements FileFilter {  private String keyword;  public Test(String keyword) {
    this.keyword = keyword;
  }  public boolean accept(File pathname) {
    return pathname.getName().toLowerCase().indexOf(keyword) >= 0;
  }  /**
   * 测试方法
   */
  public static void main(String[] args) {
    File path = new File("D:/");
    File[] list = path.listFiles(new Test(".exe"));
    for (int i = 0; i < list.length; i++) {
      System.out.println(list[i].getName());
    }
  }

解决方案 »

  1.   


    import java.io.File;public class IterateDisk { public static void main(String[] args) {
    File disk = new File("F:/");
    File[] file = disk.listFiles();
    for (int j = 0; j < file.length; j++) {
    iterateFiles(file[j]);
    }
    } public static void iterateFiles(File file) {
    if (file.isDirectory()) {
    File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) {
    iterateFiles(files[i]);
    System.out.println("----" + files[i].getName());
    }
    } else
    System.out.println("----" + file.getName());
    }
    };
      

  2.   

    呃 多谢这位大哥哈。不过这个代码不是用的filefilter吧,呃 那就是没有accept函数咯?
    那要过滤出指定类型或名称的文件怎么办呢?
      

  3.   


    System.out.println("----" + files[i].getName());
    外层根据文件名和文件后缀名进行过滤即可
      

  4.   

    >_<!嗯 我知道要过滤么 可是不会诶
    下面的代码被我改的乱七八糟了,麻烦您帮我看看吧,谢谢谢谢~~import java.io.File;
    import java.io.FileFilter;public class Test implements FileFilter {  private String keyword;  public Test(String keyword) {
        this.keyword = keyword;
      }  public boolean accept(File pathname) {
        return pathname.getName().toLowerCase().indexOf(keyword) >= 0;
      }  /**
       * 测试方法
       */
      public static void main(String[] args) {
        File path = new File("D:/");
     //   File[] list = path.listFiles(new Test(".exe"));
        
        ///////////////////////
        File[] file = path.listFiles();
        for (int j = 0; j < file.length; j++) {
            iterateFiles(file[j]);
        }
    }public static void iterateFiles(File file) 
    {
        if (file.isDirectory()) 
        {
            File[] files = file.listFiles();        for (int i = 0; i < files.length; i++) 
            {
                iterateFiles(files[i]);
                //System.out.println("----" + files[i].getName());
            }
        } 
        else
        {
         File[] list = file.listFiles(new Test(".exe"));
            for (int i = 0; i < list.length; i++) 
            {
             System.out.println(list[i].getName());
            }//System.out.println("----" + file.getName());
        }
    }
    }
      

  5.   


    得,我帮人帮到底:
    import java.io.File;public class IterateDisk {
    public static final String[] searchNames = { "a", "name2", "namexxxxx" };
    public static final String[] searchType = { ".txt" }; public static void main(String[] args) {
    File disk = new File("F:/");
    File[] file = disk.listFiles(); for (int j = 0; j < file.length; j++) {
    iterateFiles(file[j]);
    }
    } public static void iterateFiles(File file) {
    if (file.isDirectory()) {
    File[] files = file.listFiles();
    for (int i = 0; files != null && i < files.length; i++) {
    iterateFiles(files[i]);
    }
    } else {
    if (isFileMatchCondition(file.getName()))
    System.out.println("----" + file.getAbsolutePath());
    }
    } public static boolean isFileMatchCondition(String fileName) {
    boolean _matchName = false, _matchType = false;
    for (String name : searchNames) {
    if (fileName.indexOf(name) != -1) {
    _matchName = true;
    break;
    }
    } for (String type : searchType) {
    if (fileName.endsWith(type)) {
    _matchType = true;
    break;
    }
    }
    return _matchName && _matchType;
    }
    };
      

  6.   

    感激涕零~~ 
    虽然还有很多地方不懂,google到什么文件操作大全,接下来就靠自己学习了。
    再次感谢~