java 列出指定扩展名文件_获取指定目录下,指定扩展名的文件

这段Java代码演示了如何遍历指定目录(包括子目录),找出所有扩展名为.java的文件,并将这些文件的绝对路径写入到一个文本文件中。通过创建一个过滤器对象`FilterBySuffix`,实现对文件的筛选,然后使用`getList`和`getDestFile`方法分别进行文件过滤和文件路径写入。
摘要由CSDN通过智能技术生成

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.FilenameFilter;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Collection;

/*

* 获取指定目录下,指定扩展名的文件(包含子目录中的)

* 这些文件的绝对路径写入到一个文本文件中

* 简单说,就是建立一个指定扩展名的文件的列表

* 思路:

* 1,必须进行深度遍历

* 2,要在遍历的过程中进行过滤。将符合条件的内容

* 都存储到容器中。

* 3,对容器中的内容进行遍历并将绝对路径写入到文件中

*/

public class Test {

public static void main(String[] args) throws IOException {

//1,列出你想要遍历的目录

File dir = new File("d:\\");

//2,建立一个过滤器对象,根据用户指定的内容过滤

FilterBySuffix filter = new FilterBySuffix(".java");

//3,建立一个容器来装过滤后的文件

ArrayList list = new ArrayList();

//遍历,过滤功能函数

getList(dir,filter,list);

File dest = new File("destFile.txt");

//遍历,写入功能函数

getdestFile(list,dest);

}

/**

* 遍历指定目录下的文件,把指定扩展名的文件过滤下来

* 然后将指定扩展名的文件装进容器中

* @param dir

* @param filter

* @param collection

*/

public static void getList

(File dir,FilenameFilter filter,Collection collection){

File[] file = dir.listFiles();

for (File subfile:file) {

//判断是否是目录,是文件继续调用该函数

if(subfile.isDirectory()){

//递归

getList(subfile,filter,collection);

}

//不是目录,就进行过滤

else if(filter.accept(subfile, subfile.getAbsolutePath())){

collection.add(subfile);

}

}

}

/**

* 对容器进行遍历,将遍历后的文件写入到指定的文本文件里

* @param list

* @param dest

*/

public static void getdestFile(ArrayList list,File dest){

//建立一个输出字符流缓冲区对象,提高效率

BufferedWriter bufw = null;

try {

bufw = new BufferedWriter(new FileWriter(dest));

//对该容器进行遍历,然后写入到指定文件夹

for (File filename:list) {

bufw.write(filename.getAbsolutePath());

bufw.newLine();//换行

bufw.flush();//将缓冲区的数据刷新到文本文件中

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(bufw!=null){//防止发生空指针异常

try {

//关闭流

bufw.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

}

import java.io.File;

import java.io.FilenameFilter;

/*

* 过滤器的设置

*/

public class FilterBySuffix implements FilenameFilter{

//功能扩展,过滤用户指定的后缀名

private String suffix;

public FilterBySuffix(String suffix) {

super();

this.suffix = suffix;

}

@Override

public boolean accept(File dir, String name) {

//过滤该后缀名的文件

return name.endsWith(suffix);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值