Java之递归实现遍历文件目录
作者:谢景,撰写:2019-4-17
刚学到Java的File文件类,就自己运用file的一些方法实现递归遍历文件目录。
思路:
- 获取文件
- 判断该文件是否为目录
- 如果是目录则获取该目录的文件
- 再判断子文件是否为文件
- 子文件是目录则获取该目录的子文件
- 循环上面步骤
详细代码如下:
public static void bianLi(String x,int y){//x为文件名,y为目录等级
//File(String pathname):通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实 例。
File file=new File(x);
//定义一个空字符串
StringBuffer buffer=new StringBuffer("");
//方法:exists():测试此抽象路径名表示的文件或目录是否存在。返回boolean
//方法:isDirectory():测试此抽象路径名表示的文件是否是一个目录。返回boolean
//判断该文件存在并且是目录【是目录才有下一级目录】
if (file.exists()&&file.isDirectory()) {
File[] files=file.listFiles();//将文件的子文件转换为集合的形式
for (int i = 0; i < y; i++) {
//给buffer字符串循环追加"-"(几个 - 表示第几级目录);例如:--DotNetCasClient.dll [2级目录]
buffer.append("-");
}
//遍历子文件
for (File file3 : files) {//定义file3接收遍历的文件
//方法:getName():返回由此抽象路径名表示的文件或目录的名称。
//方法:getPath():将此抽象路径名转换为一个路径名字符串。
//例如E:/z/z/123.txt;【getName()获取的是123.txt;getPath()获取的是E:/z/z/123.txt】
System.out.print(buffer+file3.getName());//【拼接"-"和文件名称】
System.out.print(" ["+y+"级目录]");
System.out.println("");//输出换行
if (file3.isDirectory()) {//判断子文件是否是目录,如果是,则执行递归
bianLi(file3.getPath(),y+1);//调用自己,参数为子文件,目录等级加一;
}
}
System.out.println("");//输出换行
}
}
到这里已经实现文件递归。