利用java.io包里的File类,可以实现对文件的操作。
现在有个需求,要求遍历一个文件夹及其子文件夹里的所有文件,并且过滤出txt格式的文件,该如何做呢?
实现方法很简单,首先是通过递归遍历文件,然后对获得的文件,判断其是不是以"txt"结尾就可以了。
代码如下:
1 public static void getAllFile(File dir) {2 File[] fileArr = dir.listFiles();
3 for(File file:fileArr) {
4 if(file.isDirectory())
5 getAllFile(file);
6 if(file.isFile()) {
7 String fileName = file.getName();
8 if(fileName.toLowerCase().endsWith("txt"))
9 System.out.println(file);
10 }
11 }
12 }
其中,getAllFile的参数dir是文件的路径。
运行结果如图
也可以通过文件过滤器来实现。
代码如下:
class FileFilterImpl implements FileFilter{public boolean accept(File pathname) {
//如果pathname 是个文件夹,返回true
if(pathname.isDirectory())
return true;
return pathname.getName().toLowerCase().endsWith("txt");
}
public static void getAllFile(File dir) {
//listFiles()函数将获得的路径名传给accept方法,
//accept方法判断是文件还是文件夹,如果是文件夹返回true,
//如果是文件,判断是不是txt格式的,如果是返回true,否则返回false
File[] fileArr = dir.listFiles(new FileFilterImpl()); //文件过滤器
for(File file:fileArr) {
if(file.isDirectory())
getAllFile(file);
if(file.isFile()) {
System.out.println(file);
}
}
}
运行结果如图: