已经知道文件名,
怎么样自动往上或者往下或者跨盘寻找文件?
文件的list方法只能在指定路径遍历,
有没有一个类或者一种方法自动查找的?

解决方案 »

  1.   

    将 File[] 按名排序到集合类,再用集合类的方法操作这些元素是向前移还是向后移试试!
      

  2.   

    向下递归的方法,其中path为根路径,
    查找path目录及其子目录……
    public static List getChildDirs(String path) throws Exception {
            List dirs=new ArrayList();
            File [] filelist=new File(path).listFiles();
            if(filelist==null) return dirs;
            for(int i=0; i<filelist.length; i++) {
                if(filelist[i].isDirectory()) {
                    String childPath=filelist[i].getPath();
                    dirs.add(childPath);
                }
            }
            return dirs;
        }
        
        public static List getChildFiles(String path) throws Exception {
            List files=new ArrayList();
            File [] filelist=new File(path).listFiles();
            if(filelist==null) return files;
            for(int i=0; i<filelist.length; i++) {
                if(filelist[i].isFile()) {
                    String childPath=filelist[i].getPath();
                    files.add(childPath);
                }
            }
            return files;
        }然后用下面的方法调用上面的两个函数
            List childFiles=getChildFiles(path);
            
            for(Iterator iter=childFiles.iterator(); iter.hasNext(); ) {
                String childFile=(String) iter.next();
            }
            
            List childDirs=getChildDirs(path);
            for(Iterator iter=childDirs.iterator(); iter.hasNext(); ) {
                String childDir=(String) iter.next();
            }
      

  3.   

    现有一路经结构:
                                            F:
                                            a 
                                          b    a.txt
                                        c   a.txt
                                       a.txt 
    public class CreatFile {  static ArrayList findFilePath = new ArrayList();  //path 为根路径。findFileName 为要查找的文件名
      private static void findFile(String path,String findFileName){
        File file = new File(path);
        if(file.isDirectory()){
          File[] files = file.listFiles();
          for(int i = 0; i < files.length;i++){
            if(files[i].isFile()){
              if(files[i].getName().equals(findFileName)){
                findFilePath.add(files[i].getPath());
              }
            }else{
              findFile(files[i].getPath(),findFileName);
            }
          }
        }
      }
      public static void main(String[] as) {
        
        findFile("F:\\a","a.txt");
        for(int i = 0;i < findFilePath.size();i++){
          System.err.println("" + (String)findFilePath.get(i));
        } }
    }
    运行结果:
    F:\a\a.txtF:\a\b\a.txtF:\a\b\c\a.txt