java IO--获取指定目录下(包含子目录)指定拓展名的文件
2014-12-27 08:45
627 查看
依然在学习毕向东老师的java基础系列。讲求系统化学习,同时以验证自己的输入是否等于输出为目,分享其中的知识点给大家。
现在有一需求:获取指定目录下,指定拓展名的文件(包括子目录),并将这些文件的绝对路径写入到一个文本文件中。
如何来实现呢?首先我们必须要使用到递归方法来获取指定目录下(包括子目录)所有的文件;需求中有提到“指定的拓展名”,那么必须还需要过滤器类进行过滤操作;最后是文本文件操作相关的IO流技术。这些小知识点我们都有学过,但是结合起来到底该如何用呢?
我们先来构建一个过滤器类,可以实现在构造函数中输入“指定拓展名”,进而提高便捷性:
接下来就是实现我们全部想法的时候了!我选定的是遍历“d:\\CTEX\\”文件夹,并将所有以“.exe”结尾的文件的绝对路径名写入到“abc.txt”文本文件中,代码如下:
现在有一需求:获取指定目录下,指定拓展名的文件(包括子目录),并将这些文件的绝对路径写入到一个文本文件中。
如何来实现呢?首先我们必须要使用到递归方法来获取指定目录下(包括子目录)所有的文件;需求中有提到“指定的拓展名”,那么必须还需要过滤器类进行过滤操作;最后是文本文件操作相关的IO流技术。这些小知识点我们都有学过,但是结合起来到底该如何用呢?
我们先来构建一个过滤器类,可以实现在构造函数中输入“指定拓展名”,进而提高便捷性:
package file; import java.io.File; import java.io.FilenameFilter; public class SuffixFilter implements FilenameFilter{ private String suffix; public SuffixFilter(String suffix) { super(); this.suffix = suffix; } @Override public boolean accept(File dir, String name) { // TODO Auto-generated method stub return name.endsWith(suffix); }
接下来就是实现我们全部想法的时候了!我选定的是遍历“d:\\CTEX\\”文件夹,并将所有以“.exe”结尾的文件的绝对路径名写入到“abc.txt”文本文件中,代码如下:
package properties; 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; import file.SuffixFilter; /** * @ClassName: Test * @Description: TODO * 获取指定目录下,指定拓展名的文件(包括子目录的) * 并将这些文件的绝对路径写入到一个文本文件中 * @author Shaw * @date 2014年12月26日 下午6:48:56 * */ public class Test { /** * @throws IOException * @Title: main * @Description: TODO(这里用一句话描述这个方法的作用) * @param @param args 设定文件 * @return void 返回类型 */ public static void main(String[] args) throws IOException { //源文件夹 File f1 = new File("d:\\CTEX\\"); if(!f1.exists()){ f1.createNewFile(); } //目的文件 File f2 = new File("abc.txt"); if(!f2.exists()){ f2.createNewFile(); } //存储容器 List<File> filelist = new ArrayList<File>(); //过滤器 SuffixFilter sf = new SuffixFilter(".exe"); getFiles(f1,sf,filelist); write2File(filelist,f2); } /** * @Title: getFiles * @Description: TODO * 对指定目录中的内容进行深度遍历,并按照指定过滤器进行过滤 * 将过滤后的内容存储到容器中 * @param @param dir * @param @param filter * @param @param list 设定文件 * @return void 返回类型 */ public static void getFiles(File dir,FilenameFilter filter,List<File> list){ //得到一个Filel类下的所有文件与文件夹 File[] files = dir.listFiles(); for(File file : files){ if(file.isDirectory()){ //递归 getFiles(file,filter,list); } else{ //过滤 if(filter.accept(dir, file.getName())){ list.add(file); } } } } /** * * @Title: write2File * @Description: TODO(将容器中的文件对象的绝对路径写入到文本文件中) * @param @param list * @param @param destFile 设定文件 * @return void 返回类型 */ public static void write2File(List<File> list, File destFile){ //使用缓冲区类提高读写效率 BufferedWriter bufw =null; try { bufw = new BufferedWriter(new FileWriter(destFile)); for(File file:list){ //写入 换行 刷新 bufw.write(file.getAbsolutePath()); bufw.newLine(); bufw.flush(); } } catch (IOException e) { throw new RuntimeException(); }finally{ if(bufw!=null) try { bufw.close(); } catch (IOException e) { throw new RuntimeException(); } } } }输出到文本的部分信息如下(太多未全写):
d:\CTEX\CTeX\cct\bin\gb2wncyr.exe d:\CTEX\MiKTeX\miktex\bin\afm2afm.exe d:\CTEX\WinEdt\Uninstall.exe
相关文章推荐
- 获取一个想要的指定文件的集合,获取文件夹下(包含子目录的所有.java的文件对象,并存储到集合中)
- 获取指定目录及其子目录的所有文件(JAVA)
- 获取指定目录(包含子目录)下所有的txt文件的个数,并打印文件名称。程序1。
- JAVA之IO技术-获取指定目录下的文件夹和文件的File对象或是字符串名称。
- 从控制台获取输入的文件目录然后将该目录(包含子目录)下的.java文件复制到D:/java文件夹中
- 获取指定目录(包含子目录)下所有的txt文件的个数,并打印文件名称?
- 获取指定目录(包含子目录)下所有的txt文件的个数,并打印文件名称。程序2。
- PHP 获取指定目录下所有文件(包含子目录)
- C#获取指定目录包含的文件和子目录
- JAVA之IO技术-获取指定目录下的文件夹和文件的File对象或是字符串名称。
- Java 遍历指定目录及子目录下的文件
- 源码--删除指定目录下(包含子目录)的文件
- java文件过滤器(File类listFiles方法可选参数)--获取目录下指定的某类文件
- 根据指定目录获取所以文件包括子目录下的文件
- java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中
- Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录
- 分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里
- java获取指定目录下所有文件
- php递归获取目录内文件(包含子目录)封装类分享
- java 获取指定目录下的所有文件