最近写了一个通过递归列出某一目录下的目录及文件的方法,发现了这样的一个问题,三种level值的传递,感觉每次传的值都是一样的,但结果却都不相同,很是困惑,望前辈解惑。
目录结构:a目录下有两个目录b、bb,b目录下是c—>d—>e—>test.txt
代码如下:
public static void main(String[] args) {
// TODO Auto-generated method stub
File f = new File("F:/TURING/a");
System.out.println("level+1:");
print(f,0);
}
static void print(File file,int level) {
for (int i = 0; i < level; i++) {
System.out.print("-");
}
String str = file.getName();
System.out.println(str);
if(file.isDirectory()) {
File[] files = file.listFiles();
for (File file2 : files) {
/*******************这三种不同的写法,进行分析***************************/
// print(file2,++level);
// print(file2,level++);
print(file2,level+1);
}
}
}
三种结果:
①
level+1:
a
-b
--c
---d
----e
-----test.txt
-bb
②
level++:
a
b
c
d
e
test.txt
-bb
③
++level:
a
-b
--c
---d
----e
-----test.txt
--bb