我正在编写一个方法来列出一个目录中的所有文件,但我不知道如何使每个子目录比上一个多一个选项卡。下面是我的代码:
private static void recurseDirectoryHelper(File rootDirectory){
File[] list = rootDirectory.listFiles();
if (rootDirectory.isDirectory()){
for (int f = 0; f < list.length; f++){
if (list[f].isFile()){
System.out.println("\t" + list[f].getName());
countFiles++;
}
}
for (int d = 0; d < list.length; d++){
if (list[d].isDirectory()){
System.out.println("Subdir: " + list[d].getName());
recurseDirectoryHelper(list[d]);
}
}
}
//System.out.println("Total Files: " + countFiles + "\t" + "Total Directories: " + countDirs);
}发布于 2013-12-06 06:13:41
向您的函数添加另一个名为count的参数,如下所示:
private static void recurseDirectoryHelper(File rootDirectory, int count){每次递归调用函数时,都要传递count + 1,如下所示:
recurseDirectoryHelper(list[d], count+1);然后,当您执行System.out.println时,您确切地知道要执行多少个选项卡。
发布于 2013-12-06 06:20:55
我只需在递归方法中添加一个tabSpace字符串参数,以避免不必要的循环:
private static void recurseDirectoryHelper(File rootDirectory, String tabSpace){在第一次调用中,我会根据需要将tabSpace作为空字符串("")或单个制表符(“\t”)传递,然后使用-在对子目录的递归调用中,只需将tabSpace+"\t"作为
recurseDirectoryHelper(list[d], ""); //<-- First call from outside
recurseDirectoryHelper(list[d], tabSpace+"\t"); //<-- recursive calls在打印列表时,只需使用tabSpace进行缩进:
System.out.println(tabSpace + list[f].getName());发布于 2013-12-06 06:12:26
有第二个参数来存储你的方法的递归级别。当它第一次被调用时,它将是零。当您以递归方式调用该方法时,传入level + 1。
打印时,使用level作为要打印的选项卡数。
https://stackoverflow.com/questions/20411852
复制相似问题