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下载文件时文件名出现乱码的解决办法 2018年01月12日 15:43:32 橙子橙 阅读数:6249 java下载文件时文件名出现乱码的解决办法: String userAgent ...
- java写文件时,输出不完整的原因以及解决方法
在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bo=new BufferedWriter(new FileWriter("sql语句.txt")) ...
- java写文件时,输出不完整的原因以及解决方法close()或flush()
在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bw=new BufferedWriter(new FileWriter("sql语句.txt")) ...
- Java读取文件时第一行出现乱码“?”问号
我们在使用Java在读取文件(txt.dat等)时,如果文件不是utf-8格式的话,读取结果会出现,中文字符变乱码的情况,所以一般在读取时转为UTF-8格式读取. 但这时会出现一种情况,第一次读取第一 ...
- Java读取文件时中文路径处理
读取文件路径时可能存在以下情况: 1.空格,如果出现空格会转变成“%20” 2.中文路径,如果出现中文路径会变成URI编码“%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b” ...
- java写文件时往末尾追加文件(而不是覆盖原文件),的两种方法总结
代码如下: import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; public ...
- Java下载文件时文件名中的中文变成下划线,其他正常
将 utf-8 转换成 ISO8859-1 编码 response.addHeader("Content-Disposition", "attachment;filena ...
- php调用java类文件
最近在折腾php调用java类,网上查阅资料,最终选用JavaBridge,遇到的第一个问题是java_require() 函数引入自定义java打包而成的jar文件,在新版本的JavaBridge中 ...
- 使用IDEA创建一个Maven Web工程:无法创建Java Class文件
今天用IDEA新建了一个maven web工程,项目目录是这样的: 在新创建一个Java class 文件时,却没有Java class功能,无法创建,如图: 解决方案: 选择 File——>P ...
随机推荐
- python的递归函数
1.如果一个函数在内部调用自身本身,这个函数就是递归函数. 例:计算 n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: fact(n) = n! = 1 x 2 ...
- 洛谷P3943星空
啦啦啦啦——又是五月天的歌,题目传送门 这道题比之前两道真的不是同一级别的,这里我这个蒟蒻也讲不清,不如看下这位大佬的吧,他的写的已经非常清楚了:Z-Y-Y-S,这里我就只放下我的代码,也是按照这位大 ...
- 拜拜了,GOPATH君!新版本Golang的包管理入门教程
Go 1.11和1.12实现了对包管理的初步支持,Go的新依赖管理系统使依赖版本信息明确且易于管理.Using Go Modules - The Go Blog 新的包管理模式有什么不同? 作为Go语 ...
- 深度学习应用系列(二) | 如何使用keras进行迁移学习,以训练和识别自己的图片集
本文的keras后台为tensorflow,介绍如何利用预编译的模型进行迁移学习,以训练和识别自己的图片集. 官网 https://keras.io/applications/ 已经介绍了各个基于Im ...
- cobol COMP-3最后1位
"C" hex is positive, "D" hex is negative, and "F" hex is unsigned.
- 在spring中手动编写事务
利用事务模板TransactionTemplate来手动添加事务 public void addRant(Rant rant) { transactionTemplate.execute(-?tran ...
- Xamarin Visual Studio不识别JDK路径
Xamarin Visual Studio不识别JDK路径 错误信息:Cannot find adb.exe in specified SDK path.出现这种情况,是因为Visual Studio ...
- JZYZOJ1530 [haoi2013]开关控制 状压 dfs 折半搜索
http://172.20.6.3/Problem_Show.asp?id=1530 元宵节快要到了,某城市人民公园将举办一次灯展.Dr.Kong准备设计出一个奇妙的展品,他计划将编号为1到N的N(1 ...
- 2017 ACM-ICPC ECFINAL过山车体验
这次采用domjudge判题,算是比较好玩的啦.外榜地址:http://board.acmicpc.cn/ 然后我们很可惜地止步于192名QAQ,没看出C是个傻逼题,没读懂B..我得背锅,亏我还打了那 ...
- 【GCD】AtCoder Grand Contest 018 A - Getting Difference
从大到小排序,相邻两项作差,求gcd,如果K是gcd的倍数并且K<=max{a(i)},必然有解,否则无解. 可以自己手画画证明. #include<cstdio> #include ...