码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-08-03 12:27:55      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   java   使用   os   strong   

/**
 * 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类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中,布布扣,bubuko.com

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

标签:des   style   blog   color   java   使用   os   strong   

原文地址:http://www.cnblogs.com/200911/p/3888140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!