import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List
import java.util.Random;
import javax.swing.filechooser.FileSystemView;
/**
* 本种扫面指定文件的方法采用的是单线程
* 对于对于数据量比较大的文件系统来说最好采用多线程方式
* 读写文件 这样效率很好 TestFile2.java
* 采用多线程方式读写文件
* @author lzx
*
*/
public class TestFile {
public static void main(String[] args) {
//程序开始时间
long begin= System.currentTimeMillis();
TestFile t=new TestFile();
//声明一个list集合
List list=new ArrayList();
File [] f=t.getSystem();
//循环遍历出本机盘符并对指定文件后缀名进行查找在控制台遍历出来
for (int i = 0; i < f.length; i++) {
System.out.println(f[i]);
//查找到某个盘符过后即对本盘符下查找指定文件后缀名的文件
list=t.getFileName(f[i]);
}
//计算程序用时
System.out.println(System.currentTimeMillis()-begin);
//打印文件总数
System.out.println(list.size());
}
/**
* 获取本地所有盘符
*/
public File [] getSystem(){
File [] file= File.listRoots();
return file;
}
/**
*获取对应盘符下符合要求的文件
*/
public List getFileName(File file){
List list=new ArrayList();
File [] f=file.listFiles();
//判断f数组是否为空
if (f!=null) {
if (f.length>0) {
for(File files:f){
if (files.isDirectory()) {
getFileName(files);
}
else{
String fileName=files.getName();
String [] fName=fileName.split("\\.");
if (fName[(fName.length)-1].equals("docx")) {
list.add(files.getName());
System.out.println(files.getName());
}
}
}
}
}
return list;
}
}