当前位置:编程学习 > JAVA >>

求解求解

糊查找功能的设计与实现
   使用windows搜索工具在磁盘中查找文件时,在给出的被查找文件史允许含有通配符“*”和“?”(其中“*”表示该位置上有0个或多个任意字符,“?”表示该位置上有0个或1个字符),以达到搜索多个文件的目的。搜索的过程就是在已存在的若干文件名中查找出与所给的含有通配符“*”和“?”被查找文件名匹配的所有文件名(设文件名存储在某文本文件中,每行一个文件)
  
       求解啊求解!! --------------------编程问答-------------------- 就是IO+正则嘛 --------------------编程问答-------------------- 呜呜~~~~不懂啊!!! --------------------编程问答-------------------- 神人可否提供答案 --------------------编程问答--------------------
引用 3 楼 liangyaqiong59 的回复:
神人可否提供答案
不就是几行代码的事。。搞定没嘛..没搞定就帮你写个参考的 --------------------编程问答-------------------- 就是没有嘛
如果可以就帮我照原题解答吧,恐怕我没时间改
感激涕零了!!!! --------------------编程问答--------------------

public static void main(String[] args) throws Exception {
/*
 * 使用windows搜索工具在磁盘中查找文件时, 在给出的被查找文件史允许含有通配符“*”和“?”
 * (其中“*”表示该位置上有0个或多个任意字符, “?”表示该位置上有0个或1个字符), 以达到搜索多个文件的目的。
 * 搜索的过程就是在已存在的若干文件名中查找出与所给的含有通配符“*”和“?”
 * 被查找文件名匹配的所有文件名(设文件名存储在某文本文件中,每行一个文件)
 */
//这里是要查找的内容
String target = "b?{*.txt";
//文件名
String fileName = "files.txt";
//文件的编码
String charset = "utf-8";
StringBuffer resultBuffer = new StringBuffer(); 
for(char c : target.toCharArray()){
if(c != '*' && c != '?')
resultBuffer.append(Pattern.quote(String.valueOf(c)));
else
resultBuffer.append(c);
}
String patternString = resultBuffer.toString().replaceAll("(\\?|\\*)", ".$1");
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(fileName), charset));
String str = null;
while((str = reader.readLine()) != null){
if(str.matches(patternString))
System.out.println(str);
}
reader.close();
}


你试试,我大概测了下,估计没问题
新建一个叫files.txt的文件放在同一目录下面,内容我随便写的
afd.txt
affasd.txt
fasdfasf.af
b35{afdsfs.txt
afdasf.ddd
b5{\.txt
adsfasf.fsf
f242342.sadf
b{afdsfs.txt --------------------编程问答-------------------- 呀呀呀!!!!太谢谢了! --------------------编程问答-------------------- 早点休息 --------------------编程问答-------------------- 有点看不懂,嘿嘿
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,