使用多线程,遍历目录下所有的文件(包括子文件夹),找出文件内容包括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"); } }