在指定路径或者是文件名查找指定的字符串

采用WINDOWS的内容查找,居然只支持文本文件,不支持如JSP等文件。那就自己写一个吧,感觉还可以,将所以包含查找字符串的全路径都打印出来,这样就能够一目了然了。源程序如下:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class SearchInJspFile ... {

/***//**
*在指定的文件名中查找对应的字符串,存在就将该文件名绝对路径打印出来
*
@paramfileName文件名的绝对路径,String型
*
@paramsrcStr要查找的字符串,String型
*/

publicvoidsearchFile(StringfileName,StringsrcStr)
...{
Filefile
=newFile(fileName);
try...{
FileReaderfr
=newFileReader(file);
BufferedReaderbr
=newBufferedReader(fr);
StringstrLine
="";
while((strLine=br.readLine())!=null)
...{
if(strLine.indexOf(srcStr)>0)
...{
System.out.println(fileName);
break;
}

}

br.close();
fr.close();
}
catch(Exceptione)...{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

}

/***//**
*在指定的绝对路径中查找指定的字符串
*
@parampath绝对路径
*
@paramsrcStr要查找的字符串
*/

publicvoidsearchPath(Stringpath,StringsrcStr)
...{
Filefile
=newFile(path);
if(file.isDirectory())
...{
File[]fileList
=file.listFiles();
for(inti=0;i<fileList.length;i++)
...{
if(fileList[i].isDirectory())//是目录就调用递归
...{
searchPath(fileList[i].getAbsolutePath(),srcStr);
}

else
...{
searchFile(fileList[i].getAbsolutePath(),srcStr);
}

}

}

else
...{
searchFile(path,srcStr);
}

}

publicstaticvoidmain(String[]args)...{
//TODOAuto-generatedmethodstub
Stringpath="H:\xinkuaijizhunze\src\BIMIS";
StringsrcStr
="<iframename="pubinfo"";
SearchInJspFiles
=newSearchInJspFile();
s.searchPath(path,srcStr);
System.out.println(
"执行完毕!");
}


}

这个改进了一下,可以在一个文件中查找多个字符串,只有当多个字符串都存在于同一个文件中时,查找条件成立,打印查找到的文件名及路径。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;

public class SearchStrInPath ... {
ArrayListlistCondition
=newArrayList();//存放条件的列表

intconditionNum;//查找的条件个数

StringfileTypeExtendsName
="";//在指定的扩展名文件中查找,例如:.xml,不指定就在全部的文件中查找,包括二进制文件

/***//**
*取得总条件的个数
*
*
@return
*/

privateintgetConditionNum()...{
returnlistCondition.size();
}


/***//**
*增加需要查找的字符串,所有增加的字符串在查找的文件中都找到返加该文件名
*
@paramstr
*/

privatevoidaddCondition(Stringstr)...{
listCondition.add(str);
}


/***//**
*在给定的文件中查找
*
@paramfileName文件名
*/

publicvoidsearchFile(StringfileName)...{
Filefile
=newFile(fileName);

booleanisTrue=false;
try...{
StringstrLine
="";
for(inti=0;i<conditionNum;i++)...{
FileReaderfr
=newFileReader(file);
BufferedReaderbr
=null;
br
=newBufferedReader(fr);
Stringcondition
=listCondition.get(i).toString();
isTrue
=false;
while((strLine=br.readLine())!=null)...{
if(strLine.indexOf(condition)>0)...{
isTrue
=true;
break;
}

}

br.close();
fr.close();
if(!isTrue)...{
i
=conditionNum;//结束
}

}

if(isTrue)...{
System.out.println(fileName);
}

}
catch(Exceptione)...{
//TODOAuto-generatedcatchblock
//e.printStackTrace();
}

}


/***//**
*在指定的绝对路径中查找指定的字符串
*
*
@parampath
*绝对路径
*
@paramsrcStr
*要查找的字符串
*/

publicvoidsearchPath(Stringpath)...{
conditionNum
=getConditionNum();
Filefile
=newFile(path);
if(file.isDirectory())...{
File[]fileList
=file.listFiles();
for(inti=0;i<fileList.length;i++)...{
if(fileList[i].isDirectory())//是目录就调用递归
...{
searchPath(fileList[i].getAbsolutePath());
}
else...{
//下面为设置只读取指定后缀的文件,在这些指定的文件中去查找
if(fileTypeExtendsName==""
||fileList[i].getAbsolutePath().endsWith(fileTypeExtendsName))
searchFile(fileList[i].getAbsolutePath());
}

}

}
else...{
//下面为设置只读取指定后缀的文件,在这些指定的文件中去查找
if(fileTypeExtendsName==""
||file.getAbsolutePath().endsWith(fileTypeExtendsName))
searchFile(file.getAbsolutePath());

}

}


//一个示例
publicstaticvoidmain(String[]args)...{
//TODOAuto-generatedmethodstub
SearchStrInPaths=newSearchStrInPath();
Stringpath
="D:\work\BIMIS\bfms\web\WEB-INF\config\operation\bfms";
s.addCondition(
"IvtBaseInfoFind");
//s.addCondition("xml");//可增加多个字符串同时查找
//s.addCondition("gb2312");
s.searchPath(path);
System.out.println(
"执行完毕!");
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值