最近在做一个项目,需要实现这几项功能,上网查了很多资料,自己研究了好几天终于实现了,现在与大家分享一下。
一、JAVA实现文件夹的搜索
在百度搜索N个技术文章,从哪些大牛们共享的资料中终于写出了我想要的代码。成功实现了对文件夹的搜索。
其原理是新定义个FileListener类使其实现ActionListener和Runnable接口。将其绑定在JButton上。在向FileListener的对象传入要搜索的文件夹名称时,会先列出系统所有盘符,并开启多个线程依次搜索各个盘符,其实现原理是先列出各个盘符的列表,用递归方式列出所有文件夹中的文件,当定位到文件绝对路径中含有该关键字时,会调用analysisPath解析路径,得到文件夹绝对路径。判断无误后停止所有线程,结束搜索。下面请看代码:
import java.awt.event.ActionEvent;
import java.io.File;
public class FileListener implements java.awt.event.ActionListener, Runnable {
private static String content;//确保一变化线程中即可调用
private String root = "C:\\";
private static File[] listFile;//确保一变化线程中即可调用
private String fileName; //所需搜索问关键字
private static String item = "";//通过item来判定执行run中的哪一个方法
private Thread t;//统一设定线
private static int count = 0;//统计出现的文件个数
private FileListener fl;//控制线程的启动
private static String s = "";//标识是否停止寻找
private int threadNum = 0;
private File[] rootlist;
private int success = 0; //标识是否成功得到文件夹绝对路径
public FileListener() {
}
public FileListener(String fileName, String root) {
this.root = root;
this.fileName = fileName;
File file1 = new File("");
rootlist = file1.listRoots(); //获取所有盘符
}
public void actionPerformed(ActionEvent e) {
// System.out.println("响应事件");
content = fileName; //所需搜索的关键字
if (e.getActionCommand().equals("Search")) {
// 指定盘
if (root == null || root.equals("")) {
System.out.println("该路径不存在!");
File file = new File("");
listFile = file.listRoots();
} else {
if (content == null || content.length() == 0) {
File file = new File(root);
listFile = file.listFiles();
//启动线程
item = "search";
s = "";
fl = new FileListener(fileName, root);
t = new Thread(fl);
t.start();
} else {
// String[] list;
int number = rootlist.length;
//list = new String[number];
//list[i] = rootlist[i].getAbsolutePath()