作者:天眞啲笨尛孩 | 来源:互联网 | 2023-09-10 02:29
Java递归实现遍历文件目录(所有文件夹和子文件)测试目录(树状图)F:|-TestDialog|-a||-a1||-a2||-a3||-b||-b1||-b2||-b3.txt||-c
Java递归实现遍历文件目录(所有文件夹和子文件)
测试目录(树状图)
F:
|-TestDialog
|-a
| |-a1
| |-a2
| |-a3
|
|-b
| |-b1
| |-b2
| |-b3.txt
|
|-c
| |-c1.txt
| |-c2.txt
| |-c3
以下3个是本人整理的3个不同的答案(第三个是全部都显示出来)
第一个:(显示原有有子文件的路径)(空文件夹不显示)
public class TestDialog {
public static void main(String[] args){
//创建File实例,参数为c盘,File.separator 为分分隔符(分隔在windows下是)\,在linux下是/,调用这个方法可以自动调整
File file = new File("F:"+File.separator+"TestDialog");
print(file);
}
private static void print(File file){
//传入的文件夹是否存在
if(file.exists() && file.isDirectory()&&file != null){
//通过File类的listFiles方法获取文件夹中所有文件的全路径
File[] files = file.listFiles();
//如果文件夹不为空
if(files !=null && files.length>0){
//遍历该文件夹下的所有内容
for(int i=0;i//如果文件夹
if(files[i].isDirectory()){
//再次调用自己(递归)
print(files[i]);
}else{
//输出全路径(JVM会自动调用Object.toStrings)
System.out.println(files[i]);
}
}
}
}
}
}
显示效果:
F:\TestDialog\b\b3.txt
F:\TestDialog\c\c1.txt
F:\TestDialog\c\c2.txt
第二个是空文件夹都包括了用<>表示文件夹
package testhulian;
import java.io.File;
public class TestDialog3 {
public void print1(File mFile, int mlevel){
for(int i=0;iSystem.out.print("\t");
}
if(mFile.isDirectory()){
System.out.println("<"+getPath(mFile)+">");
String[] str = mFile.list();
for(int i=0;iprint1(new File(mFile.getPath()+"\\"+str[i]),mlevel+1);
}
}else{
System.out.println(getPath(mFile));
}
}
public String getPath(File mFile){
String fullPath = mFile.getPath();
String[]str = fullPath.split("\\\\");
return str[str.length -1];
}
public static void main(String[] args) {
TestDialog3 demo = new TestDialog3();
File rootFile = new File("F:\\TestDialog");
demo.print1(rootFile, 0);
}
}
显示效果:
alog>
b3.txt
c1.txt
c2.txt
第三个是全部文件及子文件都以树图形式显示出来
package testhulian;
import java.io.File;
public class TestDialog4 {
public static void main(String[] args) {
File f = new File("F:\\TestDialog");
System.out.println(f.getName());
tree(f, 1);
}
// 递归方法
private static void tree(File f, int level) {
String preStr = "";
for (int i = 0; i preStr += "-";
}
File[] childs = f.listFiles(); //listFiles()返回目录下的所有文件.
for (int i = 0; i System.out.println(preStr + childs[i].getName());
if (childs[i].isDirectory()) { //isDirectory()判断是否为目录
tree(childs[i], level + 1);
}
}
}
}
显示效果:
TestDialog
-a
--a1
--a2
--a3
-b
--b1
--b2
--b3.txt
-c
--c1.txt
--c2.txt
--c3