文件夹及子文件夹遍历,并找到内容含有特定字符串的文件


import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;


public class test {
    private static int count;
    public static void main(String[] args) {
        long begin=System.currentTimeMillis();
        getFile01(new File("D:/work/"),"String");
//        getFile02(new File("D:/work/"),"String");
        long end=System.currentTimeMillis();
        System.out.println(end-begin);
        System.out.println(count);
    }
    //递归遍历文件夹
    public static void getFile01(File f,String str){
        //判断f是否为null
        if(f==null){
            System.out.println("路径为空,重新传入");
            return;
        //判断f是否非文件夹
        }else if(f.isFile()){
            System.out.println("路径非文件夹,请重新传入");
            return;
        //判断f是否 存在
        }else if(!f.exists()){
            System.out.println("无此路径,请重新输入");
            return;
        }
        //列出当前文件夹下的所有文件和文件夹
        File[] fs=f.listFiles();
        
        BufferedReader bfr=null;
        String line="";
        
        //循环遍历所有文件和文件夹
        for (int i = 0; i < fs.length; i++) {
            //判断是否是文件
            if(fs[i].isFile()){
                containStr(fs[i], str);
            //如果是文件夹,就递归调用本方法
            }else{
                getFile01(fs[i],str);
            }
        }
    }
    
    
    
    //采用队列的方法进行查找
    public static void getFile02(File f,String str){
        //判断f是否为null
        if(f==null){
            System.out.println("路径为空,重新传入");
            return;
        //判断f是否非文件夹
        }else if(f.isFile()){
            System.out.println("路径非文件夹,请重新传入");
            return;
        //判断f是否 存在
        }else if(!f.exists()){
            System.out.println("无此路径,请重新输入");
            return;
        }
        
        LinkedList<File> list=new LinkedList<File>();
        
        //列出当前文件夹下的所有文件和文件夹
        File[] fs=f.listFiles();
        for (int i = 0; i < fs.length; i++) {
            if(fs[i].isDirectory()){
                list.add(fs[i]);
            }else{
                containStr(fs[i], str);
            }
        }
        File temp=null;
        while(!list.isEmpty()){
            temp=list.removeFirst();
            if(temp.isFile()){
                containStr(temp,str);
            }else{
                File[] files=temp.listFiles();
                if(files==null){
                    continue;
                }
                for (int i = 0; i < files.length; i++) {
                    if(files[i].isDirectory()){
                        list.add(files[i]);
                    }else{
                        containStr(files[i], str);
                    }
                }
            }
        }
    }
    

    public static void containStr(File f,String str){
        if(str==null||(str!=null&&str.equals(""))){
            System.out.println("test.containStr()"+"请输入合法的字符串");
            return;
        }else if(!f.isFile()){
            System.out.println("test.containStr()"+"非文件夹,请重新输入");
        }
        BufferedReader bfr=null;
        String line="";
        try {
            bfr=new BufferedReader(new FileReader(f));
            //读取一段
            line=bfr.readLine();
            //循环读取每一段,判断其中是否含有字符串str,如果含有,就打印出来此完整文件名,并终止此循环读取
            while(line!=null){
                if(line.indexOf(str)!=-1){
                    System.out.println(f.getCanonicalPath());
                    count++;
                    break;
                }
                line=bfr.readLine();
            }
        }catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}

优质内容筛选与推荐>>
1、通过java解析域名获得IP地址
2、Final阶段第1周/共1周 Scrum立会报告+燃尽图 07
3、Apache正向代理和反向代理
4、Client Server multi thread
5、android整理的一些基础知识


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号