/**
 * 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. ListView Web 服务器控件概述(MSDN)

    1: "折叠"图像"展开"图像"复制"图像"复制悬停"图像 全部折叠全部展开 代码:全部 代码:多个 代码:Visual ...

  2. 在Java中怎样把数组转换为ArrayList?

    翻译自:How to Convert Array to ArrayList in Java? 本文分析了Stack Overflow上最热门的的一个问题的答案,提问者获得了很多声望点,使得他得到了在S ...

  3. 解決 imagick 在 多线程运行时导致CPU暴增到100%的方法

    假如把imagic 安装到 /usr/local/imagemagick 目录 首先用/usr/local/imagemagick/bin/convert -version指令查看一下输出內容是否已经 ...

  4. 30个惊人的插件来扩展 Twitter Bootstrap

    Bootstrap Maxlength It is a lightweight plugin that allows detecting the HTML maxlength property of ...

  5. RHEL7 Ansible

    [root@promote tt]# rpm -iUvh http://dl.Fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch ...

  6. ASP.NET对HTML元素进行权限控制(三)

    上一篇博客中有些没有考虑到的东西这次更改一下代码如下: 界面前台: <%@ Page Language="C#" AutoEventWireup="true&quo ...

  7. ERROR 1005 (HY000): Can't create table'matrix.system_log' (errno: 150)

    CREATE TABLE `user` (`id` bigint(32) NOT NULL AUTO_INCREMENT ,`name` varchar(32) CHARACTER SET utf8 ...

  8. AnyChartStock去除水印方法

    最近在使用AnyChartStock的图表,功能很强大,但下载过来是有水印的,虽然网上也有很多破解无水印的版本,但基本都是AnyChart的,AnyChartStoc的几乎没有.所以自己尝试着去除水印 ...

  9. description 数组的中文打印

    打印一个对象:NSLog(@"%@", stu); 默认情况下打印的时对象的名字和内存地址:这时需要重写description方法 // 重写description方法 - (NS ...

  10. OpenCV之mixChannels()函数使用说明

    step 1: 函数功能说明 mixChannels主要就是把输入的矩阵(或矩阵数组)的某些通道拆分复制给对应的输出矩阵(或矩阵数组)的某些通道中,其中的对应关系就由fromTo参数制定. step ...