服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java实现windows中的dir/s查找实例

  下面是应用java实现windows中的dir/s查找的一个实例:

import java.io.file; 
import java.util.regex.matcher; 
import java.util.regex.matchresult; 
import java.util.regex.pattern; 
import java.util.regex.patternsyntaxexception; 
/**
*利用java实现windows中的dir/s查找
*这里采用正则达式解决了通配符的问题,但是有一点就是不能够通过命令行传参数
*因为如果你通过命令行传数,java会自动把你的带通过的文件名,换成当前目录匹配的文件名,
*如你在命令行以这样传入:javafilesearcha*,如果当前目录下有a.jpg,a1.jpg,那么a*
*会被自动换成a.jpg,及a1.jpg,如果在当前目录下有目录,并且子目录中有a2.jpg,那这个就查
*不出来。所有现在只能通过其它的方式调用才行,而不能够通过命令行传参数
*这个可能需要拦截器才能够解决这个问题,不过,这个我不会,如果会的并且有兴趣,可以试试
*作者:blog.csdn.net/fenglibing
*注:可以直接运行该程序,不过,你最好把该程序拷到你需要的根目录下执行。
*/
publicclass filesearch {
string filename; 
string currentpath; 
booleanregstr; 
pattern pattern; 
public filesearch(string filename) { 
/*********************用正则表达式解决通配符***************************/
if(filename.indexof("*")!=-1 || filename.indexof("?")!=-1) {
regstr=true; 
if(filename.indexof("?")!=-1) {
filename=filename.replace("?",".{0,1}"); 
}
/**********因为正则表式中的'*'和dos中的功能差不多,所以不换***********/
pattern=pattern.compile(filename); 
} 
this.filename=filename; 
file f=new file(""); //从当前路径开始查找
currentpath=f.getabsolutepath(); 
dosearch(currentpath); 
} 
privateboolean dosearch(string path) {
if(path==null)
returnfalse; 
file f = new file(path); 
file[] allfile = f.listfiles(); //取得??前目??下面的所有文件,?⑵浞旁谖募??到m中
int totalnum = allfile.length; //取得??前文件?a中有多少文件(包括文件?a)
int currentfile = 0; 
for (currentfile = 0; currentfile < totalnum; currentfile++) {
if (!allfile[currentfile].isdirectory()) {
//如果是文件是采用??理文件的方式
if(regstr==true) {
matcher matcher=pattern.matcher(allfile[currentfile].getname()); 
boolean result=matcher.find(); 
if(result) {
system.out.println(allfile[currentfile].getabsolutepath()); 
}
}
elseif (allfile[currentfile].getname().equals(filename)) {
system.out.println(allfile[currentfile].getabsolutepath()); 
}
}
//如果是文件?a就采用?f?w??理
else {
dosearch(allfile[currentfile].getpath()); 
}
}
returntrue; 
}
publicstaticvoid main(string[] args) {
filesearch filesearch = new filesearch("t?.jpg"); 
}
}

扫描关注微信公众号