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 ...
随机推荐
- 《深入理解Android2》读书笔记(一)
2017-5-12 从今天开始估计有一段空闲时间,开始阅读<深入理解Android2>,并写读书笔记. 第一章搭建环境直接略过. 第二章是Binder,暂时略过 7大类服务包括:1.And ...
- MFC获取句柄
CWnd *pWnd = GetDlgItem(ID_***); // 取得控件的指针 HWND hwnd = pWnd->GetSafeHwnd(); // 取得控件的句柄
- 7/31 CSU-ACM2018暑期训练7-贪心
比赛链接 A-CSU - 1588 现在有n堆果子,第i堆有ai个果子.现在要把这些果子合并成一堆,每次合并的代价是两堆果子的总果子数.求合并所有果子的最小代价. Input 第一行包含一个整数T(T ...
- CodeForces - 965D Single-use Stones
题面在这里! 如果你强行把问题建模,可以发现这是一个裸的增广路,又因为这是区间连边,所以跑一个 点数O(N)边数O(N log N)的线段树优化建边的网络流即可,不知道能不能过23333 但其实这个问 ...
- 【树形dp】Distance in Tree
[CF161.D] Distance in Tree time limit per test 3 seconds memory limit per test 512 megabytes A tree ...
- 【最大流】POJ3236-ACM Computer Factory
[题意] 装配一个电脑需要P个零件,现在给出N机器的信息,每个机器可以将k个电脑由状态{S1,S2..,Sp}转变为{Q1,Q2..,Qp},问最多能装配多少台电脑以及对应的方案? [思路] 1A.. ...
- [转]Android的ADT与SDK的区别
adt只是一个eclipse的插件,里面可以设置sdk路径 SDK(Software Development Kit): 一般是一些被软件工程师用于为特定的软件包.软件框架.硬件平台.操作 ...
- Hiho----有向图欧拉回路
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho破解了一道又一道难题,终于来到了最后一关.只要打开眼前的宝箱就可以通关这个游戏了. 宝箱被一种奇怪的机关锁住 ...
- Jenkins用HTTP Request Plugin插件进行网站的监控/加探针(运维监控)
使用的插件: [HTTP Request Plugin] 思路: 说明:只能是网站是否正常打开,而不能是这个网站业务是否正常,如果是后者,则需要写特定的接口进行请求处理. 1.通过插件,发送GET请求 ...
- C# mvc 上传多个附件
<div class="col-xs-12 mcp-list-item" style="margin-top:20px"> <div clas ...