/**
 * 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

 

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

  1. java基础知识回顾之javaIO类--File类应用:过滤器接口FilenameFilter和FileFilter

    FilenameFilter和FileFilter都是用来过滤文件,例如过滤,以.jpg或者.java结尾的文件,通过看他们的源码:通过使用File类中String[] list(FilenameFi ...

  2. java基础知识回顾之javaIO类--File类

    File类是对文件系统中文件以及目录(文件夹)进行封装的对象,可以通过面向对象的思想来操作文件和目录(文件夹).File类保存文件或目录的各种元素的信息,包括文件名,文件长度,最后修改日期,是否可读, ...

  3. java基础知识回顾之javaIO类--File类应用:递归深度遍历文件

    代码如下: package com.lp.ecjtu.File.FileDeepList; import java.io.File; public class FileDeepList { /** * ...

  4. java基础知识回顾之javaIO类---FileWriter和FileReader

    FileWriter类的构造方法定义如下: 1.public FileWriter(File file)throws IOException 字符流的操作比字节流操作好在一点,就是可以直接输出字符串了 ...

  5. java基础知识回顾之javaIO类--RandomAccessFile类

    java.io 类 RandomAccessFile java.lang.Object java.io.RandomAccessFile1.该类不是IO流中的子类.2.该类既能读又能写.3.该对象内部 ...

  6. java基础知识回顾之javaIO类---InputStreamReader和OutputStreamWriter转化流

    InputStreamReader:是字节流通向字符流的桥梁: OutputStreamWriter 是字符流通向字节流的桥梁: package com.lp.ecjtu; import java.i ...

  7. java基础知识回顾之javaIO类--File类应用:删除带内容的目录

    /** * 深度删除一个带内容的目录 * 原理:必须从里往外删除,需要深度遍历 * @author Administrator * */ public class FileDeleteList { / ...

  8. java基础知识回顾之javaIO类--java序列化和反序列化

    /** *  * 一:理解序列化反序列化及其应用 * 序列化:把堆内存的对象转化成字节流的过程. * 反序列化:把字节流序列恢复重构成对象的过程. * 对象的序列化的用途:1.把对象的字节序列持久化, ...

  9. java基础知识回顾之javaIO类总结

    java IO体系图 IO流的操作规律总结: 1,明确体系: 数据源:InputStream ,Reader 数据汇:OutputStream,Writer 2,明确数据:因为数据分两种:字节,字符. ...

随机推荐

  1. oracle连接和执行流程总结

    参考关于oracle连接及一个事务的完整流程分析的资料,做整理如下 参考资料: http://blog.csdn.net/wyzxg/archive/2010/08/16/5815335.aspx h ...

  2. 4_1 wp8数据绑定与独立存储空间[wp8特色开发与编程技巧]

    Wp8数据绑定与独立存储空间 数据绑定为基于 Silverlight 的应用程序提供了一种显示数据并与数据进行交互的简便方法. 数据的显示方式独立于数据的管理. UI 和数据对象之间的连接或绑定使数据 ...

  3. Ubuntu下MySQL忘记root密码重置

    MySQL忘记root密码肿么办?-_-|||   这种情况虽然不是很常见,但是有时长时间没有登录系统,还真会忘记密码.这时候,如果您能以系统管理员权限登陆密码,那还是有救的.放大招,将其重置即可. ...

  4. jquery 处理字符串 【转】

    1,去掉空格   var txt=$.trim($("txt1").val()); 2,转为数字   txtNum=Number($.trim(txt)) + 1; var thi ...

  5. Linux5.8下安装PhpMyadmin无法关联php-mcrypt问题

    一.yum安装php-mcrypt   ##发现没办法安装 原来CentOS 官方默认不在对mcrypt模块 进行支持,所以必须另想办法折腾了2个小时总算搞定,这里主要使用了Fedora的扩展库, E ...

  6. ORACLE 语句关联统计

    很久不用SQL语句了,貌似入职新公司后,又回归到了三年前的SQL时代,一写一坨的SQL好吧,也当回归一下过去的知识. 下面是统计2月份某数据的计费统计 select t.telno as 主号,VID ...

  7. 【Qt】Qt Assistant介绍【转】

    简介 Qt Assistant也就是我们常说的Qt助手,是一款用于呈现在线文档的工具. 简介 一分钟学会使用 Qt参考文档 Qt Assistant详解 命令行选项 工具窗口 文档窗口 工具栏 菜单 ...

  8. 使用MongoDB的开源项目

    根据谷歌的搜索结果筛选出来的. 统计应用 counlty https://count.ly/ mongopress 开源CMS系统 http://www.mongopress.org/ Rubedo ...

  9. PHP学习之数组的定义和填充

    数组就是把一组数据按顺序放在一起.PHP的数组和其它的语言数组有一点点不同:第一,保存的数据是可以是任何类型的:第二,数组的索引可以是数字,也可以是字符串. PHP的数组,说白了,就是关联数据每一条数 ...

  10. Summary of Amazon Marketplace Web Service

    Overview Here I want to summarize Amazon marketplace web service (MWS or AMWS) that can be used for ...