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. HDU 1829 A Bug's Life 【带权并查集/补集法/向量法】

    Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes ...

  2. JavaScript之函数和this

    一. 函数的内部属性 1. 在函数内部有两个特殊的对象: arguments: 类数组对象,包含传入函数中的所有参数.其有一个callee属性,该属性是一个指针,指向拥有这个arguments对象的函 ...

  3. 最短路&生成树&二分图匹配&费用流问题

    最短路 题意理解,建图 https://vjudge.net/problem/UVALive-4128 飞机票+行程建图 https://vjudge.net/problem/UVALive-3561 ...

  4. Bzoj1101 Zap(莫比乌斯反演)

    题面 Bzoj 题解 先化式子 $$ \sum_{x=1}^a\sum_{y=1}^b\mathbf f[gcd(x,y)==d] \\ = \sum_{x=1}^a\sum_{y=1}^b\sum_ ...

  5. Python开发基础-Day17面向对象编程介绍、类和对象

    面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...

  6. 【高斯消元】CDOJ1784 曜酱的线性代数课堂(二)

    高斯消元求矩阵秩板子. #include<cstdio> #include<cmath> #include<algorithm> #include<cstri ...

  7. 【枚举】【并查集】Gym - 101243F - Vitamins

    题意:有n片药,有三种颜色,白色比红色重,红色比蓝色重,给你一些它们之间的重量关系,比如1>3,2=4之类,问你它们的颜色,如果没法判断的输出?. 先并查集把等于号全缩起来,然后按照大于号建图, ...

  8. 【高斯消元】BZOJ1013-[JSOI2008]球形空间产生器sphere

    [题目大意] 给出n维空间中给出n+1个点的坐标,求出球心坐标. [思路] 令球心坐标为x1,x2...xn,假设当前第i个点坐标为a1,a2...,an,第i+1个点坐标为b1,b2...,bn,则 ...

  9. git远程仓库创建及权限管理(二)多个项目

    本文介绍ubutu下使用gitolite实现多项目的权限管理1.安装git sudo apt-get install git 2.设置Git的user name和email: git config - ...

  10. Java并发(五):synchronized实现原理

    一.synchronized用法 Java中的同步块用synchronized标记. 同步块在Java中是同步在某个对象上(监视器对象). 所有同步在一个对象上的同步块在同时只能被一个线程进入并执行操 ...