我已知一个目录FolderA,现在我怎么样才能知道这个目录下面一共有多少层目录(即目录的深度),同时把在每个目录里面的文件全部列出来,最后把这些文件名取出来写到一个文本文件中去。同时要保证文件名按照ascii码排列。e.g.
FolderA-----FolderA1
          |-FolderA2
          |-FolderA3---------FolderA31
          |-:              |-FolderA32
          |-:              |-FolderA33...........
          |-:              |-File31
          |-:              |-File32
          |-:              |-File33
          |-File1
          |-File2
            
最后形成的文本文件是
FolderA\File1
FolderA\File2
FolderA\FolderA1\......
.................
FolderA\FolderA3\File31
FolderA\FolderA3\File32
FolderA\FolderA3\File33
FolderA\FolderA3\FolderA31\......
FolderA\FolderA3\FolderA33\......
................我想了好久,百思不得其解,希望能够借大家的智慧,一起解决这个问题,谢谢。

解决方案 »

  1.   

    这个不难啊,只要写个递归就可以啦。
    这个函数接收一个File作为参数,然后list其中的子文件和子目录出来,然后逐个子目录再调用这个函数,这样就可以递归访问到所有文件了至于按名字排序的话,你可以这个函数List出来以后自己使用Arrays.sort的方法来排序一把
      

  2.   

    先帮你解决层次数目的问题,至于按字典序排列随便放个数组或容器排一下序就可以了import java.io.*;public class FolderHelper {
    public static int subFolder(File f){
    int num=0;
    if(f.isFile()){
    System.out.println(f.getAbsoluteFile().toString());
    return 0;
    }
    else{
    File[] file=f.listFiles();
    for(int i=0;i<file.length;i++){
    num=Math.max(num,subFolder(file[i]));
    }
    return 1+num;
    }
    }
    public static void main(String args[])
    {
    if(args.length==1){
    File f=new File(args[0]);
    subFolder(f);
    }
    }
    }
      

  3.   

    感谢大家,基本功能已经实现,现把主要代码帖出来,一起分享。
            File fileDir = new File(path);
            strFile = fileDir.list();        
            for (int i = 0; i < strFile.length; i++) {
                File fileFolder = new File(path + "/" + strFile[i]);            
                if (fileFolder.isDirectory()){
                 if (fileFolder.list().length == 0){
                 System.out.println("ffffffffffffffff     " + fileFolder.getAbsolutePath());
                 }else{
                     strPath = path + "/" + strFile[i];
                 File fileDirNext = new File(strPath);
                
                 fileContinueTo(strPath,fileDirNext); //             实现递归
                 }            }else{
                 System.out.println("gggggggggggggggg     " + fileFolder.getAbsoluteFile());
                }
            }