首页 > 代码库 > java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。