IO获取指定目录及其目录下子目录

  一、需求:获取指定目录下,指定扩展名的文件(包含子目录中的)

  二、需要用到的方法

    1、FilenameFilter :返回抽象路径名的定义中表示此抽象路径名的目录中的文件的数组。

       filter.accept : 对遍历到的文件进行过滤器的过滤,将符合对象的File文件   

package keyboad;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 需求:
 * 获取指定目录下,指定扩展名的文件(包含子目录中的)
 * 这些文件的绝对路径写入到一个文本文件中
 *
 * means:建立一个指定的扩展名的文件列表
 *思路:
 * 1、深度遍历
 * 2、需要在遍历过程总进行过滤,将符合条件的内容储存到容器中
 * 3、对容器中的内容进行遍历并将绝对路径写入到文件中
 *
 * Created by lcj on 2017/11/10.
 */
public class practiseDemo {
    public static void main(String[] args) {
        //指定一个文件目录
        File dir = new File("D:\\Repository");
        //过滤器,过滤后缀名为.jar
        FilenameFilter filter = new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".jar");
            }
        };
        List<File> list = new ArrayList<File>();
        //执行getFiles方法,执行完将数据储存至list中
        getFiles(dir , filter , list);
        //将过滤完的文件保存至java.txt文件中
        File destFile = new File(dir,"java.txt");
        //执行wrinte2File方法
        wrinte2File(list,destFile);
    }

    /**
     *对指定目录中的内容进行深度遍历,并按照指定过滤器,进行过滤
     * 将过滤器后的内容存储到指定容器List中
     * @param dir
     * @param filter
     * @param list
     */
    //文件路径,FilenameFilter 过滤器文件名,将过滤掉的数据存储数组
    public static void getFiles(File dir,FilenameFilter filter,List<File> list ) {
//listFiles 方法:返回抽象路径名的定义中表示此抽象路径名的目录中的文件的数组。
        File[] files = dir.listFiles();
        for (File file : files)///file 变量
        {
            if (file.isDirectory())
            {
                //如果File是目录,将进行递归
                getFiles(file,filter,list);
            }else {
                //对遍历到的文件进行过滤器的过滤,将符合对象的File文件,存储至List集合中
                if (filter.accept(dir,file.getName()))
                {
                    list.add(file);
                }
            }
        }
    }
    //什么文件写入到    写到那个文件(目的文件)
    public static void wrinte2File(List<File> list,File destFile)      //List<File>  字符流
    {

        BufferedWriter bufw = null;
        try {
            bufw = new BufferedWriter(new FileWriter(destFile));
            for (File file :list)
            {
                bufw.write(file.getAbsolutePath());
                bufw.newLine();
                bufw.flush();
            }
        }catch (Exception e)
        {
            throw  new RuntimeException("关闭失败");
        }
        finally {
            if (bufw !=null)
            {
                try {
                    bufw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                    throw  new RuntimeException("关闭失败");
                }
            }
        }
    }
}
时间: 2024-08-23 17:29:50

IO获取指定目录及其目录下子目录的相关文章

JAVA之IO技术-获取指定目录下的文件夹和文件的File对象或是字符串名称。

package ioTest.io3; /* * 获取指定目录下的文件夹和文件的File对象或是字符串名称. * 也可以通过filter获取指定的文件夹或者指定类型的文件 * 这里面需要做一个总结,如何利用jdk的源码去理解不熟悉的方法的应用. */ import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; public class FileDemo2 { public static void m

IO流-获取指定目录下文件夹和文件对象【File类】

一.运用File类实现获取指定目录下文件夹和文件对象 1.File类 2.方法: 获取文件绝对路径 :getAbsolutePath 案例: import java.io.File; /** * 获取指定目录下文件夹和文件对象 * Created by lcj on 2017/11/7. */ public class fileTest03 { public static void main(String[] args) { File dirr = new File("D:\\xuexizili

c# 获取指定目录下的所有文件并显示在网页上

参考文献: FileInfo 的使用  https://msdn.microsoft.com/zh-cn/library/system.io.fileinfo_methods(v=vs.110).aspx 网页表格的生成  http://www.w3school.com.cn/html/html_tables.asp C# 通过文件扩展名获取图标和描述 http://www.csframework.com/archive/2/arc-2-20110514-1478.htm   http://ww

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

/** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. *  * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件--过滤器FileNameFilter,将文件存入容器中 * 3.将容器中的内容遍历,写入到指定文件中 * */ 代码:  FilenameFilter 过滤器: package com.lp.ecjtu.File.filter; import java.io.File; import java.i

golang 获取指定目录下的子文件列表

获取指定目录下的子文件列表 package main import "fmt" import "io/ioutil" func main() { dir_list, e := ioutil.ReadDir("C:/Documents and Settings/xxx/Desktop/Copy of change-sub") if e != nil { fmt.Println("read dir error") return }

Scala 获取指定目录下的所有文件名(不包括目录名)

最近在学习Scala,想要获取指定目录下的所有文件名,但是Scala  中有没有相应的库函数,由于本人是新手,所以弄了半天,好不容易才将网上的一段Scala 递归获取指定目录下所有目录的代码改成获取文件名,特在此备忘,也希望高手指点. 下面是一段递归获取目录名称的代码: def subdirs(dir: File): Iterator[File] = { val children = dir.listFiles.filter(_.isDirectory) children.toIterator

一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本

摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 @for&ever 2010-07-03 功能: 获取指定目录下面符合一定规则的文件名称和文件修改时间,并保存到指定的文件中 脚本如下: #!/usr/bin/env python# -*- coding: utf-8 -*- '''Created on 2010-7-2 @author: fore

获取指定目录下的所有文件名,包括子目录函数

获取指定目录下所有文件名,这是一个一个目录遍历的方法: function TPathWatch.FList(ASourFile: string): TStrings; // 查找子目录 AStrings存放查找出路径, ASourceFile要查找的目录 var sour_path, sour_file: string; // 源路径,源文件名类型 TmpList: TStringList; FileRec, subFileRec: TSearchrec; i: Integer; begin R

python3获取指定目录内容的详细信息

不同平台获取指定目录内容的详细信息命令各不相同: Linux中可以通过ls -al获取获取 windows中可以通过dir命令获取 下面是我写的一个通用获取目录内容详细信息的python3脚本: #!/usr/bin/env python3 # -*- coding: utf-8 -*- import os, time, sys from os.path import join, getsize def ListDir(dir_data): ''' :param dir_data: 指定获取内容