2.多线程查找目录下所有包含关键字的文件名
2016-12-07 12:56
375 查看
import java.io.File; import java.io.FileFilter; import java.util.ArrayList; import java.util.Scanner; class MyFileFilter implements FileFilter{ private String keywords; public MyFileFilter(String keywords){ this.keywords = keywords; } @Override public boolean accept(File pathname) { // TODO Auto-generated method stub if (pathname.isDirectory()){ return true; } else if (pathname.getName().contains(keywords)){ return true; } return false; } } class MySearchTask extends Thread{ private File file; private String keywords; public MySearchTask(File file, String keywords){ this.file = file; this.keywords = keywords; } public void search(File file){ File[] files = file.listFiles(new MyFileFilter(keywords)); if (files == null) return; for (File f : files){ if (f.isDirectory()){ search(f); } else{ System.out.println(f.getPath()); } } } public void run(){ search(file); } } public class TestDemo { private static ArrayList<MySearchTask> list; static{ list = new ArrayList<MySearchTask>(100); } public static void search(File file, String keywords){ File[] files = file.listFiles(new MyFileFilter(keywords)); if (files == null) return; for (File f : files){ if(f.isDirectory()){ MySearchTask myTask = new MySearchTask(f, keywords); myTask.start(); list.add(myTask); } else{ System.out.println(f.getPath()); } } } } public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); System.out.println("Input directory:"); String fileDir = scan.nextLine(); System.out.println("Input keywords:"); String keywords = scan.nextLine(); long begin = System.currentTimeMillis(); File file = new File(fileDir); search(file, keywords); try { for (MySearchTask task : list){ task.join(); //将主线程添加到各个线程后面,使得各个子线程执行完后再执行主线程 } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } long end = System.currentTimeMillis(); System.out.println("spend time:" + (end-begin) + "ms"); }
相关文章推荐
- 查找某个目录下包含有某个关键字的所有文件夹以及子文件夹里的文件名
- 4.多线程查找目录下所有文件中是否有一行包含关键字
- 1.查找目录下所有包含关键字的文件名
- 【代码】当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径
- 在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径
- java在指定路径下查找所有文件及其子文件名中,是否包含指定查询的关键字
- python 文件和目录 当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- 采用多线程和生产者消费者模式来实现对于一个目录以及所有子目录下的文件内容的搜索,打印出包含指定关键字的行.
- 编写一个Python程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径
- 编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- linux下查找某目录下所有文件包含某字符串的命令
- linux下grep实现某目录下所有目标字符串的递归(包含子目录)查找
- linux下查找某目录下所有文件包含某字符串的命令
- 根据存储过程包含某个关键字,查找相关所有存储过程信息及根据多个主键删除重复列
- 在某个目录下的所有文件中查找包含某个字符串的Windows命令
- 在某个目录下的所有文件中查找包含某个字符串的Windows命令
- linux下查找某目录下所有文件包含某字符串的命令
- 在某个目录下的所有文件中查找包含某个字符串的Windows命令
- Python实现查找指定目录下包括某关键字的所有文件脚本
- linux下查找某目录下所有文件包含某字符串的命令