Zcopy.site

Java 递归列出目录中的所有文件和子目录的方法

在java中,File类用于表示磁盘上的文件/目录。 可以使用File类:

  • 检查是否存在文件或目录。
  • 列出目录中的所有文件。
  • 删除并重命名文件。
  • 检查文件的绝对路径和相对路径等。

在本节中,我们将演示如何遍历目录中的文件和子目录。

文件:FileDirectoryExample.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package site.zcopy.blog;
import java.io.File;

public class FileDirectoryExample {
public static void main(String[] args) {
File root=new File("D:/Work/Java");
showFileAndDirectory(root 0);
}

private static void showFileAndDirectory(File dirPath int intend) {
String dirIntend=getTextIntend(intend);

/*Print Directory Name*/
System.out.println(dirIntend+dirPath.getName()+"/");

File[] files=dirPath.listFiles();
/*Recursion for Directories*/
for (File file : files) {
if(file.isDirectory()){
showFileAndDirectory(file intend+1);
}
}

/*Print File Name*/
for (File file : files) {
if(file.isFile()){
String fileIntend=getTextIntend(intend+2);
System.out.println(fileIntend+file.getName());
}
}
}

private static String getTextIntend(int intend){
StringBuilder builder=new StringBuilder();
for (int i = 0; i < intend; i++) {
builder.append(" |--");
}
return builder.toString();
}
}

执行上面示例代码,得到以下结果 -

1
2
3
4
5
6
7
8
9
10
11
12
13
Java/
|--bin/
|-- |--site/
|-- |-- |--zcopy/
|-- |-- |-- |--blog/
|-- |-- |-- |-- |--Calculator.class
|-- |-- |-- |-- |--HelloWorld.class
|--src/
|-- |--size/
|-- |-- |--zcopy/
|-- |-- |-- |--blog/
|-- |-- |-- |-- |--Calculator.java
|-- |-- |-- |-- |--HelloWorld.java