递归遍历出符合要求的文件

来源:互联网 发布:mysql limit分页查询 编辑:程序博客网 时间:2024/05/27 02:28

很多时候我都会在文件中去提取或者找出相似的文件之类的,为了熟悉在文件集上面的操作,特实现如下案例

import java.io.File;import java.util.ArrayList;import java.util.Iterator;/** * All rights reserved. * Created by zhaideyin on 2017/10/17. * Description:find all java file in TIJ4-code */public class FileTreeInfo implements Iterable<File> {    public ArrayList<File> mfileList=new ArrayList<File>();    public ArrayList<File> mdirList=new ArrayList<File>();    @Override    public  Iterator<File> iterator() {        return mfileList.iterator();    }    public  void addAll(FileTreeInfo other){        mfileList.addAll(other.mfileList);        mdirList.addAll(other.mdirList);    }    public  FileTreeInfo iteratorFile(File file,String regx){        FileTreeInfo mresult=new FileTreeInfo();//每一次迭代都会产生新的文件树结构        for(File mfile:file.listFiles()) {            if (mfile.isDirectory()) {                System.out.println("-"+mfile.getName());                mresult.mdirList.add(mfile);                mresult.addAll(iteratorFile(mfile, regx));            } else if (mfile.getName().matches(regx)) {                mresult.mfileList.add(mfile);                System.out.println("---"+mfile.getName());            }        }        return mresult;    }   @Override   public String toString(){        return "dir:"+mdirList.toString()+"\n"+"file:"+mfileList.toString();   }    public static void main(String[] args) {        FileTreeInfo fileTreeInfo=new FileTreeInfo();        File file=new File("C:\\Users\\Administrator\\Desktop\\OS专用文件夹\\TIJ4-code");        fileTreeInfo.iteratorFile(file,".*\\.java");    }}

其中在递归遍历的时候如果处理不好遍历的次数,就会造成java.lang.StackOverflowErro错误

阅读全文
0 0
原创粉丝点击