读书人

阻塞队列 查找文件夹上文件匹配出指

发布时间: 2012-09-03 09:48:39 作者: rapoo

阻塞队列 查找文件夹下文件,匹配出指定字符的文件名、行数、该行语句

/** * 这个任务对于一个给定的关键字搜索文件 */public class SearchTask implements Runnable {public SearchTask(BlockingQueue<File> queue, String keyword) {this.queue = queue;this.keyword = keyword;}public void run() {try {boolean done = false;while (!done) {File file = queue.take();if (file == FileEnumerationTask.DUMMY) {queue.put(file);done = true;} else {search(file);}}} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}/** * 搜索特定关键字的文件和打印所有匹配的行 * @param file * @throws IOException */public void search(File file) throws IOException {Scanner in = new Scanner(new FileInputStream(file));int lineNumber = 0;while (in.hasNextLine()) {lineNumber++;String line = in.nextLine();if (line.contains(keyword)) {System.out.printf("%s:%d:%s%n", file.getPath(), lineNumber, line);}}in.close();}private BlockingQueue<File> queue;private String keyword;}

读书人网 >编程

热点推荐