`
u011936142
  • 浏览: 42982 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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;
	}

}


分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    JAVA上百实例源码以及开源项目源代码

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java网络爬虫,网络检索作业

    (1) 能够搜集本站内的所有网页,能提取出其中的URL并加入到待搜集的URL队列中,对非本网站域名的URL,只允许搜集首页,记录发现的URL即可;对搜集的结果,产生2个URL列表:站内搜集URL、非站内(站外)发现URL; ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     18.1.1 默认情况下关联级别的运行时检索策略  18.1.2 迫切左外连接  18.1.3 左外连接  18.1.4 内连接  18.1.5 迫切内连接  18.1.6 隐式内连接  18.1.7 右外连接  18.1.8 使用SQL风格的交叉连接和隐式内连接...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     18.1.1 默认情况下关联级别的运行时检索策略  18.1.2 迫切左外连接  18.1.3 左外连接  18.1.4 内连接  18.1.5 迫切内连接  18.1.6 隐式内连接  18.1.7 右外连接  18.1.8 使用SQL风格的交叉连接和隐式内连接...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     18.1.1 默认情况下关联级别的运行时检索策略  18.1.2 迫切左外连接  18.1.3 左外连接  18.1.4 内连接  18.1.5 迫切内连接  18.1.6 隐式内连接  18.1.7 右外连接  18.1.8 使用SQL风格的交叉连接和隐式内连接...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     18.1.1 默认情况下关联级别的运行时检索策略  18.1.2 迫切左外连接  18.1.3 左外连接  18.1.4 内连接  18.1.5 迫切内连接  18.1.6 隐式内连接  18.1.7 右外连接  18.1.8 使用SQL风格的交叉连接和隐式内连接...

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    关于数据库模糊检索的描述,下列哪些说法符合《阿里巴巴Java开发手册》:ABD A .绝对禁止左模糊。 B .绝对禁止全模糊。 C .绝对禁止右模糊。 D .全模糊或左模糊查询需求,优先使用搜索引擎。 多选 21....

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    Java的产生与流行是当今Internet发展的客观要求,Java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,...

    Android高级编程--源代码

    3.6.5 运行时配置更改 62 3.7 深入探讨Android活动 63 3.7.1 创建一个活动 63 3.7.2 活动生命周期 65 3.7.3 Android活动类 70 3.8 小结 70 第4章 创建用户界面 73 4.1 Android UI基本设计 74 4.2 View简介 ...

    oracle数据库经典题目

    9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。 10.使用Save命令可以将缓冲区中的SQL命令保存到一个文件中,并且可以使用Run命令运行该文件。 11.一个模式只能够被一个数据库对象所拥有,其创建的...

    asp.net知识库

    在.NET访问MySql数据库时的几点经验! 自动代码生成器 关于能自定义格式的、支持多语言的、支持多数据库的代码生成器的想法 发布Oracle存储过程包c#代码生成工具(CodeRobot) New Folder XCodeFactory3.0完全攻略--...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    主要功能点:高安全性的用户管理体系、高安全性的异构系统数据导入导出、拼音检索、复合检索、无限级次数据管理、个性化邮件群发、Excel文件导入导出。 技术点 ADO.Net技术应用、SQLServer、MD5安全算法、基于NPOI的...

    MySQL中文参考手册

    o 4.16 升级和降级(downgrading)时有什么特别要做的事情吗? + 4.16.1 从一个 3.22 版本升级到 3.23 + 4.16.2 从一个 3.21 版本升级到 3.22 + 4.16.3 从一个 3.20 版本升级到 3.21 + 4.16.4 升级到其他的...

    正则表达式

    /\s+java\s+/ //匹配字符串"java" ,并且该串前后可以有一个或多个空格. /[^"] * / //匹配零个或多个非引号字符. 正则表达式的复制字符 字符 含义 ________________________________________________________...

    MYSQL常用命令大全

    PROCESS: 显示或杀死属于其它用户的服务线程。 RELOAD: 重载访问控制表,刷新日志等。 SHUTDOWN: 关闭MySQL服务。 数据库/数据表/数据列权限: Alter: 修改已存在的数据表(例如增加/删除列)和索引。 Create: 建立新...

    MySQL命令大全

    PROCESS: 显示或杀死属于其它用户的服务线程。 RELOAD: 重载访问控制表,刷新日志等。 SHUTDOWN: 关闭MySQL服务。 数据库/数据表/数据列权限: Alter: 修改已存在的数据表(例如增加/删除列)和索引。 Create: ...

    MySQL中文参考手册.chm

    MySQL 4.15.4 选项文件 4.16 升级和降级(downgrading)时有什么特别要做的事情吗? 4.16.1 从一个 3.22 版本升级到 3.23 4.16.2 从一个 3.21 版本升级到 3.22 4.16.3 从一个 3.20 版本升级到...

Global site tag (gtag.js) - Google Analytics