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检索文件时加入线程的更多相关文章

  1. java下载文件时文件名出现乱码的解决办法

    转: java下载文件时文件名出现乱码的解决办法 2018年01月12日 15:43:32 橙子橙 阅读数:6249   java下载文件时文件名出现乱码的解决办法: String userAgent ...

  2. java写文件时,输出不完整的原因以及解决方法

    在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bo=new BufferedWriter(new FileWriter("sql语句.txt")) ...

  3. java写文件时,输出不完整的原因以及解决方法close()或flush()

    在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bw=new BufferedWriter(new FileWriter("sql语句.txt")) ...

  4. Java读取文件时第一行出现乱码“?”问号

    我们在使用Java在读取文件(txt.dat等)时,如果文件不是utf-8格式的话,读取结果会出现,中文字符变乱码的情况,所以一般在读取时转为UTF-8格式读取. 但这时会出现一种情况,第一次读取第一 ...

  5. Java读取文件时中文路径处理

    读取文件路径时可能存在以下情况: 1.空格,如果出现空格会转变成“%20” 2.中文路径,如果出现中文路径会变成URI编码“%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b” ...

  6. java写文件时往末尾追加文件(而不是覆盖原文件),的两种方法总结

    代码如下: import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; public ...

  7. Java下载文件时文件名中的中文变成下划线,其他正常

    将 utf-8 转换成 ISO8859-1 编码 response.addHeader("Content-Disposition", "attachment;filena ...

  8. php调用java类文件

    最近在折腾php调用java类,网上查阅资料,最终选用JavaBridge,遇到的第一个问题是java_require() 函数引入自定义java打包而成的jar文件,在新版本的JavaBridge中 ...

  9. 使用IDEA创建一个Maven Web工程:无法创建Java Class文件

    今天用IDEA新建了一个maven web工程,项目目录是这样的: 在新创建一个Java class 文件时,却没有Java class功能,无法创建,如图: 解决方案: 选择 File——>P ...

随机推荐

  1. 从零开始做SSH项目(二)

    使用hibernate测试加载数据.删除数据和修改数据等功能时,针对的是与数据库表user对应的User. 为了简化对其他数据表对应的实体类的持久化操作,可以在项目中创建一个BaseHibernate ...

  2. CodeForces 779E Bitwise Formula

    位运算,枚举. 按按分开计算,枚举$?$是$0$还是$1$,分别计算出$sum$,然后就可以知道该位需要填$1$还是$0$了. #include<map> #include<set& ...

  3. ExtJs之组件(window)

    Ext.create('Ext.window.Window',{    title:'',    width:400,    height:300,    constrain:true,//限制窗口不 ...

  4. java 反射 获取Class对象的三种方式

    String str="hello world"; //方式一 :通过对象的getClass()方法 Class<?> clazz1 =str.getClass(); ...

  5. shell 文件个数 vs 文件夹个数

    文件个数 ls -l |grep "^-"|wc -l 文件夹个数 ls -l |grep "^d"|wc -l

  6. centos7 crontab管理

    crontab -l 当前用户的任务 crontab -e 编辑任务列表 crontab -r 删除当前用户的任务

  7. HDU 5967 小R与手机(动态树)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5967 [题目大意] 给出一张图,每个点仅连一条有向边,或者不连, 要求查询在可更改有向边的情况每个 ...

  8. 20162303实验三 敏捷开发与XP实践-1

    北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 石亚鑫 学号:20162303 成绩: 2分 指导教师:娄嘉鹏 王志强 实验日期:5月12日 实验密 ...

  9. win8 wamp 安装报错

    可是安装wamp的时候(http://www.wampserver.com/en/#download-wrapper)下载的是64位的,刚开始报 错xxx.dll文件丢失,好吧我把那个xxx.dll文 ...

  10. Java高级架构师(一)第37节:反向代理和动静分离的实现

    http协议->server->location 输入http:locahost:80/ 进入百度的界面. 做负载转发测试.路径已经转发,可能一些协议已经屏蔽了,导致内容出不来. 关于负载 ...