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

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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值