java多线程实例之查找文件夹下面包含特定字符串的文件

使用多线程,遍历目录下所有的文件(包括子文件夹),找出文件内容包括search字符串的的那些文件,并打印出来。这里使用匿名内部类创建线程。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;

public class FileSearch {
	public static void search(File folder, String search){
//		if(folder.length()==0)
//			return;
	    if(folder.exists()){
	    	File[] files = folder.listFiles();
	    	for(File file:files){
				if(file.isDirectory()){
					search(file.getAbsoluteFile(),search);
				}else{		//如果是文件,则对文件进行查找,查找到的话就输出文件路径
					System.out.println("文件下包含的文件:"+file.getAbsolutePath());
					Thread thread = new Thread(){
						public void run() {
							
							try {
								FileReader reader=new FileReader(file);
								String str="";	//记录文件的所有字符
								int ch=0,j=0;
								while((ch=reader.read())!=-1){
									 str += (char) ch;    
								}
								if (str != null)    
					            {    
					                if (str.indexOf(search, 0) != -1)     //从开头开始索引,找到一个就输出路径
					                {    
					                	System.out.println("查找到字符串,文件:"+file.getAbsolutePath());
					                }    
					            }    
							} catch (FileNotFoundException e) {
								e.printStackTrace();
							}catch (Exception e) {
								e.printStackTrace();
							}
							
						}
					};
					thread.start();  	  //启动查找线程
				}
			}
	    }
	}
	
	public static void main(String[] args) {
		search(new File("E:\Coding\JAVA\MultilThread\MultilThreadLearn\src\test"),"testnidauye");
	}
}

  

原文地址:https://www.cnblogs.com/271934Liao/p/6894352.html