热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

面试题-程序题-Java递归实现遍历文件目录(所有文件夹和子文件)

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



推荐阅读
author-avatar
天眞啲笨尛孩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有