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

最新文章

  1. bugfree安装 centos
  2. ios第三方库和工具类
  3. 开发者账号续期后,itunes停止付款了
  4. HDU-3549 最大流模板题
  5. vmware12用 unlocker206能不能解锁 OS X系统
  6. IOS NSThread
  7. Cannot unwrap to requested type [javax.sql.DataSource]
  8. 使用edgesForExtendedLayout遇到的麻烦
  9. Spring Boot Mongodb
  10. 一台服务器上同时启动多个 Tomcat
  11. UCS业务知识介绍
  12. 说说erlang tuple和record结构
  13. 微信小程序常见问题
  14. Something of HTTP
  15. qhfl-2 ContentType组件
  16. Android工程中javax annotation Nullable找不到的替代方案
  17. HTML5API之获取地理位置详解
  18. Linux内核启动流程分析(二)【转】
  19. 002_JavaSE笔记:单例模式
  20. ubuntu14.4.4安装smb服务实现文件共享

热门文章

  1. [jquery] input值发生变化则触发
  2. (2)go 规范,变量,基本数据类型
  3. 洛谷P3690 [模板] Link Cut Tree [LCT]
  4. Linux中的命令判断
  5. AtCoder - 4162 Independence
  6. BZOJ 2073 [POI2004]PRZ(状压DP)
  7. 【计算几何】【极角排序】【二分】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem J. Triangles
  8. Linux下使用cut切割有规则的列文本
  9. [HTML/CSS]说说position
  10. c语言下的变量类型及计算