递归查找目录下的所有txt文件
思路:主要就是利用File类的一些方法,如file.isFile():判断file是否是一个文件;file.listFiles():找到file目录下的所有文件,返回类型是File[]数组.
Windows下的文件结构如下:
需要注意的是d2目录有个非txt格式的4.docx文件,在查找过程时,需要对其进行过滤。
-- D:/temp
-- d1 (文件夹)
-- d2 (文件夹)
--3.txt
--4.docx
--1.txt
--2.txt
Java代码如下:
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class TxtFileSearch {
//res数组用来存放所有的txt文件(绝对路径)
public List<String> res = new ArrayList<>();
//递归函数需要提供 当前目录 作为形参
public void find (File root) {
File[] sons = root.listFiles();
//如果sons已经没有子文件了(即root本身就是一个文件时) 则return 结束递归
if (sons == null) return;
for (File son: sons) {
//如果son是一个文件,且它的文件名的后缀是txt结尾,则保存该文件
if (son.isFile() && son.getName().split("\\.")[1].equals("txt")) {
res.add(son.toString());
} else {
//反之,son是一个目录 则继续查找
find(son);
}
}
}
public static void main(String[] args) {
TxtFileSearch tfs = new TxtFileSearch();
tfs.find(new File("D:/temp"));
for (String file: tfs.res) {
System.out.println(file);
}
}
}