您的位置:首页 > 编程语言 > Java开发

java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

2014-08-03 10:35 1091 查看
/**
* File文件综合应用
* 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中。
*
* 思路:1.需要深度遍历。--递归
* 2.遍历的过程中过滤指定扩展名的文件--过滤器FileNameFilter,将文件存入容器中
* 3.将容器中的内容遍历,写入到指定文件中
*
*/

代码:

FilenameFilter 过滤器:

package com.lp.ecjtu.File.filter;

import java.io.File;
import java.io.FilenameFilter;

public class FileterByJava implements FilenameFilter {

private String SufixName;//传入过滤的名称
public FileterByJava(String SufixName){
this.SufixName = SufixName;
}

@Override
public boolean accept(File dir, String name) {
System.out.println("dir:"+dir+"_____"+"name:"+name);
return name.endsWith(SufixName);
}

}


主程序:程序都有注释,请看程序

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.List;

/**
* File文件综合应用
* 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中。
*
* 思路:1.需要深度遍历。--递归
* 2.遍历的过程中过滤指定扩展名的文件--过滤器FileNameFilter,将文件存入容器中
* 3.将容器中的内容遍历,写入到指定文件中
*
*/
public class FileNameFileterWriteFile {

/**
* @param args
*/
public static void main(String[] args) {
File dir = new File("E:\\demodir");
FilenameFilter fileter = new FileterByJava(".bak");//过滤.bak文件
List<File>fileList = new ArrayList<File>();
getFileList(dir,fileter,fileList);
File desFile = new File(dir, "FileList.txt");
write2File(fileList, desFile);
}
/**
*
* @param dir 需要遍历的目录
* @param filter 过滤满足条件的文件
* @param fileList 存放符合条件的容器
*/
public static void getFileList(File dir,FilenameFilter filter,List<File>fileList){
if(dir.exists()){
File[] files = dir.listFiles();//找到目录下面的所有文件
for(File file:files){
//递归
if(file.isDirectory()){
getFileList(file,filter,fileList);
}else{
//对遍历的文件进行过滤,符合条件的放入List集合中
if(filter.accept(dir, file.getName())){
fileList.add(file);
}
}
}

}
}
/**
* 将容器中的文件遍历,写入到目的文件中
* @param list  存放满足条件的文件的集合
* @param desFile 要写入的目的文件
*/
public static void write2File(List<File>fileList,File desFile){
BufferedWriter bw = null;
try {
//使用字符流写入到目的文件中
bw = new BufferedWriter(new FileWriter(desFile));
//遍历List集合
for(File file:fileList){
bw.write(file.getAbsolutePath());//写入目的文件绝对路径
bw.newLine();
bw.flush();
}

} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(bw != null){
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}


输出:在指定的目录下面创建目的文件:FileList.txt,里面存放:

E:\demodir\FileDir\Professional_32_2052.dat.bak
E:\demodir\FileDir\sgim_piccell.v1.bin.bak
E:\demodir\FileDir\sgim_picidx.v1.bin.bak
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐