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