多線程查找指定字符串

  • 多線程查找
package iolearning;
import java.io.File;
public class TestThreadFindString  {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("d:\\");
		String s = "Test";
		search(file,s);
	}		
	public static void search(File file,String search) {
		//如果爲文件,就啓動線程進行查找,不必等待這個線程結束,繼續遍歷下一個文件
		if(file.isFile()&&file.getName().toLowerCase().endsWith(".java"))
			new FindFile(file,search).start();
		if(file.isDirectory()) {
				File[] list = file.listFiles();
				for (File f : list) {
	                search(f, search);
	                //System.out.println(f);
				}
		}		
	}
}
package iolearning;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class FindFile extends Thread{
	private File file;
	private String search;
	//添加構造函數,成員變量賦值
	public FindFile(File file, String search) {
		this.file = file;
		this.search = search;
	}
	//重寫run()方法
	public void run() {
		if(serachFile(file).contains(search)) {
			System.out.printf("包含字符串%s所在的文件爲%s\n",search,file);
		}
	}
	//讀文件
	public String serachFile(File file) {
		try(FileReader fr = new FileReader(file)) {
			char[] ch = new char[(int)file.length()];
			fr.read(ch);
			return 	new String(ch);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
}
  • 單線程查找
package iolearning;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class TestSingleFileSearch {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("d:\\");
		String s = "Test";
		search(file,s);
	}
	public static void search(File file, String search) {
		//是否是文件
		if(file.isFile()&&file.getName().toLowerCase().endsWith(".java")) {
			try {	
			FileReader fr = new FileReader(file);
			char ch[] = new char[(int)file.length()];
			fr.read(ch);
			String s = new String(ch);
			if(s.contains(search)) {
				System.out.printf("包含字符串%s所在的文件爲%s\n",search,file);
			}
		} catch (IOException e) {
			e.printStackTrace();
			}
		}
		//是否是文件夾
		if(file.isDirectory()) {
			File[] list = file.listFiles();
			for (File f : list) {
                search(f, search);
                System.out.println(f);
            }
		}
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章