一、功能要求:
用户单击“选择地址”按钮,程序自动打开文件夹选择器(如图2),用户选定用户选择目标文件夹后,输入文件名(可包含“*”表示任意连续多个字符,“?”示任意一个字符),选择文件的扩展名。程序自动获取指定目录下满足条件的所有文件,并显示在窗体中(如图1)。
二、关键技术:
首先获取指定目录下的文件数组,再从该数组中查询满足条件的文件。
三、实现的图形用户界面如下:
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
public class SearchFile {
private List<String> resultLsit = new ArrayList<String>();
private String fileName = null;
public SearchFile(){
}
public SearchFile(String basePaht,String regex,String suffix){
this.SearchFlieList(basePaht, regex, suffix);
}
public void SearchFlieList(String basePaht,String matchStr,String suffix){
File root = new File(basePaht);
if(root!=null&&root.listFiles()!=null)
for(File file:root.listFiles()){
if(file.isDirectory())
SearchFlieList(file.getAbsolutePath(),matchStr,suffix);
else if(file.isFile()&&file.getName().endsWith(suffix)){
fileName = file.getName().contains(".")?file.getName().substring(0,file.getName().lastIndexOf(".")):file.getName();
if(matching(matchStr,fileName))
resultLsit.add(file.getAbsolutePath());
}
}
}
private boolean matching(String matchStr,String targerStr){
matchStr = matchStr.replaceAll("\\*", ".*").replaceAll("\\?", "\\.");
try {
if(Pattern.compile(matchStr).matcher(targerStr).matches())
return true;
} catch (Exception e) {
return false;
}
return false;
}
public List<String> getResultLsit() {
return resultLsit;
}
public void setResultLsit(List<String> resultLsit) {
this.resultLsit = resultLsit;
}
public static void main(String[] args) {
Long start = System.currentTimeMillis();
SearchFile searchFile = new SearchFile("d:/", "*ant*", ".jar");
for (String string : searchFile.getResultLsit()) {
System.out.println(string);
}
System.out.println("耗时:"+(System.currentTimeMillis()-start));
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。