读取某个文件夹下面的所有文件,使用多线程处理,例如读取E盘下面的文件内容:
- package thread;
-
- import java.io.File;
- import java.util.concurrent.BlockingQueue;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.concurrent.LinkedBlockingQueue;
-
- public class BigDataFile {
-
- private class DealFile implements Runnable
- {
-
-
- BlockingQueue<File> bFile = null;
-
-
- File file = null;
-
- public DealFile(BlockingQueue<File> bFile, File file)
- {
- this.bFile = bFile;
- this.file = file;
- }
-
- @Override
- public void run() {
- getFileName(file.listFiles());
- }
-
-
- private final void getFileName(File[] fileDirectory)
- {
- for(File file : fileDirectory)
- {
- if(file.isDirectory())
- {
-
- getFileName(file.listFiles());
- }
- else
- {
-
- System.out.println(file.getName());
- bFile.add(file);
- }
- }
- }
- }
-
- public static void main(String[] args) throws InterruptedException {
-
-
- BlockingQueue<File> bFile = new LinkedBlockingQueue<File>();
-
-
- File file = new File("D://");
-
-
- ExecutorService es = Executors.newCachedThreadPool();
-
- BigDataFile bf = new BigDataFile();
-
-
- for(File f : file.listFiles())
- {
- if(f.isDirectory())
- {
- es.execute(bf.new DealFile(bFile, f));
- }
- else
- {
- System.out.println(f.getName());
- bFile.add(f);
- }
- }
-
-
- es.shutdown();
- }
-
- }
java 中使用线程池处理文件夹下面的子文件
原文:http://www.cnblogs.com/xm1-ybtk/p/5087155.html