Java—每次运行for循环时缩进行

Java—每次运行for循环时缩进行,java,for-loop,indentation,Java,For Loop,Indentation,我正在编写一个方法来列出一个目录中的所有文件,但我不知道如何使每个子目录比上一个多出一个选项卡。 这是我的密码: private static void recurseDirectoryHelper(File rootDirectory){ File[] list = rootDirectory.listFiles(); if (rootDirectory.isDirectory()){ for (int f = 0; f < list.length; f+

我正在编写一个方法来列出一个目录中的所有文件,但我不知道如何使每个子目录比上一个多出一个选项卡。 这是我的密码:

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);
}
private static void recurseDirectoryHelper(文件根目录){
File[]list=rootDirectory.listFiles();
if(rootDirectory.isDirectory()){
对于(int f=0;f
还有第二个参数来存储方法递归的级别。第一次调用时,它将为零。递归调用该方法时,传入
level+1


打印时,使用
level
作为要打印的选项卡数。

在函数中添加另一个名为
count
的参数,如下所示:

private static void recurseDirectoryHelper(File rootDirectory, int count){
recurseDirectoryHelper(list[d], count+1);
每次递归调用函数时,传递
count+1
,如下所示:

private static void recurseDirectoryHelper(File rootDirectory, int count){
recurseDirectoryHelper(list[d], count+1);

然后,当您执行
System.out.println
时,您确切地知道要执行多少选项卡。

我只需在递归方法中添加一个
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

只需保留一个带有“currentIndent”的
字符串,并在需要时添加一个选项卡即可。@user2744307感谢分享反馈。如果您认为这是有帮助的,那么不要忘记接受关闭此线程的答案。