问题描述
- [求助]使用java在指定的目录下实现文件的模糊搜索
- 一、功能要求:
用户单击“选择地址”按钮,程序自动打开文件夹选择器(如图2),用户选定用户选择目标文件夹后,输入文件名(可包含“*”表示任意连续多个字符,“?”示任意一个字符),选择文件的扩展名。程序自动获取指定目录下满足条件的所有文件,并显示在窗体中(如图1)。
二、关键技术:
首先获取指定目录下的文件数组,再从该数组中查询满足条件的文件。
三、实现的图形用户界面如下:
解决方案
已经基本实现了。我发布到我的博客了,你看下。
http://blog.csdn.net/tongyi55555/article/details/46565531
解决方案二:
package test;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 basePahtString regexString suffix){ this.SearchFlieList(basePaht regex suffix); } public void SearchFlieList(String basePahtString matchStrString suffix){ File root = new File(basePaht); if(root!=null&&root.listFiles()!=null) for(File file:root.listFiles()){ if(file.isDirectory()) SearchFlieList(file.getAbsolutePath()matchStrsuffix); else if(file.isFile()&&file.getName().endsWith(suffix)){ fileName = file.getName().contains(""."")?file.getName().substring(0file.getName().lastIndexOf(""."")):file.getName(); if(matching(matchStrfileName)) resultLsit.add(file.getAbsolutePath()); } } } private boolean matching(String matchStrString 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)); }}
时间: 2024-10-03 00:05:14