公司电脑不能上网,而且我们都是在虚拟机上开发,虚拟机上的windows自带的搜索功能不能用,所以我想自己用java做个检索文件的工具。但是硬盘里有超过一百万个文件,如果慢慢扫描找的话,慢的要死,但是又不知道有什么其他方法?
各位高手帮帮忙吧。
我用dos的tree命令生成了一个树形的目录结构,但是又不知道怎么读取这个结构,因为我找到文件后我还要知道它的绝对路径在哪里?java

解决方案 »

  1.   

    如果用java的话还是只有递归找,但是速度肯定也快不了。写了个方法,你可以试试import java.io.File;
    import java.io.FileFilter;
    import java.util.ArrayList;
    import java.util.List;public class Test1 { public static String fileName = "需要查找的文件名称"; public static List<String> path = new ArrayList<String>();

    public static void main(String[] args) throws Exception {
    File file = new File("文件夹顶层目录");
    find(file);
    } public static void find(File dir) {
    File[] files = dir.listFiles(new FileFilter() {
    public boolean accept(File pathname) {
    if(pathname.isDirectory()){
    return true;
    }
    if (pathname.isFile() && pathname.getName().indexOf(fileName) != -1) {
    return true;
    }
    return false;
    }
    });
    if(files != null){
    for(File file : files){
    if(file.isDirectory()){
    find(file);
    }else{
    path.add(file.getAbsolutePath());
    }
    }
    }
    }
    }
      

  2.   

    windows处理多文件也是用索引吧
      

  3.   

    Editplus 这个工具那么好,我每次都用它,,还支持正则,递归