package demo.io;
import java.io.*;
import java.util.ArrayList;
class 递归获取指定后缀文件写入文件 {
public static void main(String[] args) {
File dir = new File("I:\\Test");
//定义集合存放指定后缀文件的路径
ArrayList<String> fileNames = new ArrayList<>();
//递归将文件路径存入集合
listAll(dir, fileNames);
//遍历集合
for (String fileName : fileNames) {
System.out.println(fileName);
}
//写入文件
File file = new File("I:\\Test\\遍历指定后缀文件的路径.txt");
inputFile(file, fileNames);
}
//写入文件
private static void inputFile(File file, ArrayList<String> fileNames) {
BufferedWriter bufw = null;
try {
bufw = new BufferedWriter(new FileWriter(file));
for (String fileName : fileNames) {
bufw.write(fileName, 0, fileName.length());
bufw.newLine();
bufw.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufw != null) {
bufw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
//使用集合存放指定后缀文件的路径
private static void listAll(File dir, ArrayList<String> fileNames) {
File[] files = dir.listFiles(new FilterBySuffix3(".bmp"));
for (File file : files) {
//如果是目录就继续遍历
if (file.isDirectory()) {
listAll(file, fileNames);
} else {
//如果是文件就存入集合
fileNames.add(file.getAbsolutePath());
}
}
}
}
//递归过滤得到指定后缀文件
class FilterBySuffix3 implements FileFilter {
private String suffix;
FilterBySuffix3(String suffix) {
this.suffix = suffix;
}
@Override
public boolean accept(File pathname) {
if (pathname.isDirectory())//如果是目录就继续遍历
return true;
//如果该文件是指定后缀,返回true,否则返回false
return pathname.getName().endsWith(suffix);
}
}
/**
* 也可以用过滤器对象对每一个文件筛选
* <p>
* * 对指定目录中的内容进行深度遍历,并按照指定过滤器,进行过滤,
* * 将过滤后的内容存储到指定容器List中。
* * @param dir
* * @param filter
* * @param list
* public static void getFiles(File dir,FilenameFilter filter,List<File> list){
* <p>
* File[] fls = dir.listFiles();
* for(File file :fles){
* if(file.isDirectory()){
* //递归啦!
* getFiles(file,filter,list);
* }else{
* //对遍历到的文件进行过滤器的过滤。将符合条件File对象,存储到List集合中。
* if(filter.accept(dir, file.getName())){
* list.add(file);
* }
* }
* }
* }
* <p>
* <p>
* 对应的简单过滤器
* FilenameFilter filter = new FilenameFilter(){
*
* @Override public boolean accept(File dir, String name) {
* <p>
* return name.endsWith(".java");
* }
* };
*/
递归获取指定后缀文件写入文件
最新推荐文章于 2022-05-01 21:00:18 发布
本文介绍如何使用Java递归获取'I:Test'目录下所有'.bmp'文件的路径,并将这些路径写入'Test遍历指定后缀文件的路径.txt'文件。通过ArrayList存储路径,利用FileFilter进行后缀筛选。
摘要由CSDN通过智能技术生成