zoukankan      html  css  js  c++  java
  • java检索文件时加入线程

    package xianChengSaomiao;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Test6 {
    
    	/**
    	 * @param args
    	 *            用线程实现快速扫描指定路径满足筛选条件的文件
    	 * 
    	 * 
    	 *            对半拆分,按照一定的规律拆分得到的数据, 再将拆分后的数据进行处理
    	 */
    
    	public static void path(File file) {
    
    		// 解决空指针问题
    		if (file.listFiles(new MyFilenameFilter()) != null) {
    			// 筛选符合的文件
    			File files[] = file.listFiles(new MyFilenameFilter());
    			// 遍历文件集合,并输出
    			for (File f : files) {
    				System.out.println(f);
    			}
    			// 记录当前路径下的所有文件夹
    			String[] path = file.list();
    			if (path.length > 0) {
    				for (String url : path) {
    					// 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
    					File fil = new File(file, url);
    					// 如果是文件夹就继续深入检索
    					if (fil.isDirectory()) {
    						// 递归处理
    						path(fil);
    					}
    				}
    			}
    		}
    
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		// 创建指定目录的文件对象
    		File file = new File("f:\");
    
    		// 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
    		File files[] = file.listFiles();
    
    		// 创建集合来添加文件夹
    		List<File> url = new ArrayList<File>();
    		// 遍历集合
    		for (File f : files) {
    			// 判断是否是文件夹,如果是就将文件夹添加到集合
    			if (f.isDirectory()) {
    				// 判断是否是隐藏文件夹,如果不是就添加到集合
    				if (!f.isHidden()) {
    					url.add(f);
    				}
    			} else {
    				if (!f.isHidden()) {
    					System.out.println(f);
    				}
    			}
    		}
    
    		// 拆分文件夹集合,
    		// 首先得到集合长度
    		int longList = url.size();
    		int x, y;
    
    		// 目前是手动开启线程,开启两个,所以判断两次
    		if (longList % 2 == 0) {
    			x = y = longList / 2;
    		} else {
    			x = longList / 2;
    			y = longList / 2 + 1;
    		}
    
    		// 将集合转拆分为数组
    		// 定义和集合一样长的数组进行数据的接收
    		File[] fil = new File[longList];
    		int index = 0;
    		// 遍历集合并向数组中添加元素
    		for (File f : url) {
    			fil[index] = f;
    			index++;
    		}
    
    		// 定义指定长度的数组
    		final File[] file_1 = new File[x];
    		final File[] file_2 = new File[y];
    		// 向分里出来的数组拷贝数据
    		System.arraycopy(fil, 0, file_1, 0, file_1.length);
    		System.arraycopy(fil, file_1.length, file_2, 0, file_2.length);
    
    		
    		//开启线程
    		new Thread() {
    			public void run() {
    				System.out.println(this.getName());
    				for (File f : file_1) {
    					if (f.isDirectory()) {
    						path(f);
    					} else {
    						System.out.println(f);
    					}
    				}
    			}
    		}.start();
    
    		new Thread() {
    			public void run() {
    				System.out.println(this.getName());
    				for (File f : file_2) {
    					if (f.isDirectory()) {
    						path(f);
    					} else {
    						System.out.println(f);
    					}
    				}
    			}
    		}.start();
    	}
    
    }
    
    package test;
    
    import java.io.File;
    
    import java.io.FilenameFilter;
    
    //实现FilenameFilter接口,可用于过滤器文件名
    //本方法实现的是筛选指定格式结尾的文件
    public class MyFilenameFilter implements FilenameFilter {
    
    	/**
    	 * @param args
    	 * 
    	 *            实现功能; 实现FilenameFilter接口,定义出指定的文件筛选器
    	 * 
    	 */
    
    	@Override
    	// 重写accept方法,测试指定文件是否应该包含在某一文件列表中
    	public boolean accept(File dir, String name) {
    		// TODO Auto-generated method stub
    		// 创建返回值
    		boolean flag = true;
    		// 定义筛选条件
    		// endWith(String str);判断是否是以指定格式结尾的
    		if (name.toLowerCase().endsWith(".txt")) {
    
    		} else if (name.toLowerCase().endsWith(".doc")) {
    
    		} else if (name.toLowerCase().endsWith(".doc")) {
    
    		} else {
    			flag = false;
    		}
    
    		// 返回定义的返回值
    
    		// 当返回true时,表示传入的文件满足条件
    		return flag;
    	}
    
    }
    



  • 相关阅读:
    享受法国葡萄酒
    shell (bash) hot keys
    传统MapReduce框架
    【oracle】常用命令
    【转】商业J2EE中间件价值何在?
    【转】Linux(CentOS)服务器上安装Webmin
    【转】CentOS 5安装免费主机控制面板Webmin
    【源码】不规则矩形窗体的设计
    【转】虚拟机VirtualBox+Centos+NAT网络的配置过程
    【jsp】 config配置的关键字
  • 原文地址:https://www.cnblogs.com/james1207/p/3367695.html
Copyright © 2011-2022 走看看