Java 通配符匹配查找文件
来源:互联网 发布:linux 修改账户密码 编辑:程序博客网 时间:2024/05/17 09:19
=============================
字符串匹配例子
String s = "*txt.*";
s = s.replace('.', '#');
s = s.replaceAll("#", "////.");
s = s.replace('*', '#');
s = s.replaceAll("#", ".*");
s = s.replace('?', '#');
s = s.replaceAll("#", ".?");
s = "^" + s + "$";
System.out.println(s);
Pattern p = Pattern.compile(s);
ArrayList list = new ArrayList();
list.add("aabc.txt");
list.add("sdfsdfaabc.txt.asdasd");
list.add("aabcd.txt");
list.add("aabcdtxt.sadf");
list.add("abc.txt");
Matcher fMatcher = null;
String s1 = null;
int size = list.size();
for(int i=0;i<size;i++)
{
s1 = (String)list.get(i);
fMatcher = p.matcher(s1);
if(fMatcher.matches())
{
System.out.println(s1);
}
}
===========================================
实用的模糊(通配符)文件查找程序
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.ArrayList;
/**
* <p>Title: FileService </p>
* <p>Description: 获取文件 </p>
* <p>Copyright: Copyright (c) 2007</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class FileService {
public FileService() {
}
/**
* 在本文件夹下查找
* @param s String 文件名
* @return File[] 找到的文件
*/
public static File[] getFiles(String s)
{
return getFiles("./",s);
}
/**
* 获取文件
* 可以根据正则表达式查找
* @param dir String 文件夹名称
* @param s String 查找文件名,可带*.?进行模糊查询
* @return File[] 找到的文件
*/
public static File[] getFiles(String dir,String s) {
//开始的文件夹
File file = new File(dir);
s = s.replace('.', '#');
s = s.replaceAll("#", "////.");
s = s.replace('*', '#');
s = s.replaceAll("#", ".*");
s = s.replace('?', '#');
s = s.replaceAll("#", ".?");
s = "^" + s + "$";
System.out.println(s);
Pattern p = Pattern.compile(s);
ArrayList list = filePattern(file, p);
File[] rtn = new File[list.size()];
list.toArray(rtn);
return rtn;
}
/**
* @param file File 起始文件夹
* @param p Pattern 匹配类型
* @return ArrayList 其文件夹下的文件夹
*/
private static ArrayList filePattern(File file, Pattern p) {
if (file == null) {
return null;
}
else if (file.isFile()) {
Matcher fMatcher = p.matcher(file.getName());
if (fMatcher.matches()) {
ArrayList list = new ArrayList();
list.add(file);
return list;
}
}
else if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null && files.length > 0) {
ArrayList list = new ArrayList();
for (int i = 0; i < files.length; i++) {
ArrayList rlist = filePattern(files[i], p);
if (rlist != null) {
list.addAll(rlist);
}
}
return list;
}
}
return null;
}
/**
* 测试
* @param args String[]
*/
public static void main(String[] args) {
}
}
- Java 通配符匹配查找文件
- 文件查找常用通配符表达式
- java 递归实现通配符匹配
- 通配符删除文件-Java
- 文件通配符匹配检测C算法实现
- 文件通配符中大小写匹配问题?
- C++使用通配符查找文件(FindFirstFile)
- 通配符匹配
- 通配符匹配
- 通配符匹配
- 通配符匹配
- Java 查找指定文件夹下的匹配文件
- java查找匹配的文本
- 按通配符查找文件的系统调用和gprof
- Java 用正则表达式来实现 通配符匹配 (支持*, ?)
- Java中使用通配符配置struts文件<单通配符和双通配符>
- 文件名通配符匹配算法
- 通配符匹配问题
- 洗牌算法分析(一)
- 用fatJar将SWT/JFace工程打成双击可执行Jar包
- CString类所有成员函数详解
- 洗牌程序分析(二)
- AgoBot 僵尸网络研究笔记(九)
- Java 通配符匹配查找文件
- 软件企业:共同发展的“系统工程”
- 原来什么行业都这样难呀?
- PHP图片上传代码 2
- CEGUI学习笔记一--FirstWindow和FalagardDemo1分析
- HighSpeed TCP for Large Congestion Windows by Sally Floyd Notes
- jsf in action 笔记:潜藏对象(Implicit Variables)--2008.04.09
- 用javascript生成xml
- C#实现软件自动升级