我已知一个目录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\......
................我想了好久,百思不得其解,希望能够借大家的智慧,一起解决这个问题,谢谢。
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\......
................我想了好久,百思不得其解,希望能够借大家的智慧,一起解决这个问题,谢谢。
这个函数接收一个File作为参数,然后list其中的子文件和子目录出来,然后逐个子目录再调用这个函数,这样就可以递归访问到所有文件了至于按名字排序的话,你可以这个函数List出来以后自己使用Arrays.sort的方法来排序一把
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);
}
}
}
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());
}
}