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感谢分享反馈。如果您认为这是有帮助的,那么不要忘记接受关闭此线程的答案。