java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中
/**
* 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类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中的更多相关文章
- java基础知识回顾之javaIO类--File类应用:过滤器接口FilenameFilter和FileFilter
FilenameFilter和FileFilter都是用来过滤文件,例如过滤,以.jpg或者.java结尾的文件,通过看他们的源码:通过使用File类中String[] list(FilenameFi ...
- java基础知识回顾之javaIO类--File类
File类是对文件系统中文件以及目录(文件夹)进行封装的对象,可以通过面向对象的思想来操作文件和目录(文件夹).File类保存文件或目录的各种元素的信息,包括文件名,文件长度,最后修改日期,是否可读, ...
- java基础知识回顾之javaIO类--File类应用:递归深度遍历文件
代码如下: package com.lp.ecjtu.File.FileDeepList; import java.io.File; public class FileDeepList { /** * ...
- java基础知识回顾之javaIO类---FileWriter和FileReader
FileWriter类的构造方法定义如下: 1.public FileWriter(File file)throws IOException 字符流的操作比字节流操作好在一点,就是可以直接输出字符串了 ...
- java基础知识回顾之javaIO类--RandomAccessFile类
java.io 类 RandomAccessFile java.lang.Object java.io.RandomAccessFile1.该类不是IO流中的子类.2.该类既能读又能写.3.该对象内部 ...
- java基础知识回顾之javaIO类---InputStreamReader和OutputStreamWriter转化流
InputStreamReader:是字节流通向字符流的桥梁: OutputStreamWriter 是字符流通向字节流的桥梁: package com.lp.ecjtu; import java.i ...
- java基础知识回顾之javaIO类--File类应用:删除带内容的目录
/** * 深度删除一个带内容的目录 * 原理:必须从里往外删除,需要深度遍历 * @author Administrator * */ public class FileDeleteList { / ...
- java基础知识回顾之javaIO类--java序列化和反序列化
/** * * 一:理解序列化反序列化及其应用 * 序列化:把堆内存的对象转化成字节流的过程. * 反序列化:把字节流序列恢复重构成对象的过程. * 对象的序列化的用途:1.把对象的字节序列持久化, ...
- java基础知识回顾之javaIO类总结
java IO体系图 IO流的操作规律总结: 1,明确体系: 数据源:InputStream ,Reader 数据汇:OutputStream,Writer 2,明确数据:因为数据分两种:字节,字符. ...
随机推荐
- Codevs 1205 单词翻转
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题解 题目描述 Description 给出一个英语句子,希望你把句子里的单词顺序都翻转过来 输入 ...
- Android下各个按键对应的key code
KEYCODE_UNKNOWN=0; KEYCODE_SOFT_LEFT=1; KEYCODE_SOFT_RIGHT=2; KEYCODE_HOME=3; KEYCODE_BACK=4; KEYCOD ...
- 七天学会NodeJS-学习笔记
在网上发现一篇nodeJS教程,名为七天学会NodeJS,标题很有吸引力.我不指望七天能学会,只希望可以入门,下面是我的学习笔记和遇到的问题. 教程网址:http://nqdeng.github.io ...
- Oracle 动态视图3 V$SESSION
每一个连接到数据库实例中的session都拥有一条记录.包括用户session及后台进程如DBWR,LGWR,arcchiver等 Column Datatype Description SADDR ...
- Python开发【第一篇】Python基础之函数递归
函数递归 递归的本质: 就是一个函数调用另外一个函数. def d(): return '123' def c(): r = d() return r def b(): r = c() return ...
- 【转】微软MVP攻略 (如何成为MVP?一个SQL Server MVP的经验之谈)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 初衷 什么是微软MVP? 成为微软MVP的条件? 如何成为微软MVP? (一) 申请时间划分 (二) 前期准备 (三) ...
- Excel REPT函数使用
需要制作1K大小的数据 使用Excel REPT函数可以迅速制造 Excel REPT 函数 =REPT(1,1024) 结果直接黏贴进txt文件,注意删除尾空格.
- SQLserver行转列与列转行
行表: 行表 姓名 属性 属性值 JACK 身高 180 JACK 体重 80 JACK 年龄 27 TOM 身高 164 TOM 体重 59 TOM 年龄 20 列表: 列表 姓名 身高 年龄 体重 ...
- ORA-00054
系统版本: [root@yoon ~]# more /etc/oracle-releaseOracle Linux Server release 5.7 数据库版本: Oracle Database ...
- python之range(), xrange()
可以这样理解: range()立即执行,返回结果 xrange()延迟执行,需要时再返回结果.