您的位置:首页 > 其它

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

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




import java.io.BufferedReader;


import java.io.File;


import java.io.FileReader;




public class SearchInJspFile ...{






/** *//**


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


* @param fileName 文件名的绝对路径,String型


* @param srcStr 要查找的字符串,String型


*/


public void searchFile(String fileName,String srcStr)




...{


File file=new File(fileName);




try ...{


FileReader fr=new FileReader(file);


BufferedReader br=new BufferedReader(fr);


String strLine="";


while((strLine=br.readLine())!=null)




...{


if(strLine.indexOf(srcStr)>0)




...{


System.out.println(fileName);


break;


}


}


br.close();


fr.close();




} catch (Exception e) ...{


// TODO Auto-generated catch block


e.printStackTrace();


}


}




/** *//**


* 在指定的绝对路径中查找指定的字符串


* @param path 绝对路径


* @param srcStr 要查找的字符串


*/


public void searchPath(String path,String srcStr)




...{


File file=new File(path);


if(file.isDirectory())




...{


File[] fileList=file.listFiles();


for(int i=0;i<fileList.length;i++)




...{


if(fileList[i].isDirectory())//是目录就调用递归




...{


searchPath(fileList[i].getAbsolutePath(),srcStr);


}


else




...{


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


}


}


}


else




...{


searchFile(path,srcStr);


}


}




public static void main(String[] args) ...{


// TODO Auto-generated method stub


String path="H:/xinkuaijizhunze/src/BIMIS";


String srcStr="<iframe name="pubinfo"";


SearchInJspFile s=new SearchInJspFile();


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 ...{


ArrayList listCondition = new ArrayList();// 存放条件的列表




int conditionNum;// 查找的条件个数




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






/** *//**


* 取得总条件的个数


*


* @return


*/




private int getConditionNum() ...{


return listCondition.size();


}






/** *//**


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


* @param str


*/




private void addCondition(String str) ...{


listCondition.add(str);


}






/** *//**


* 在给定的文件中查找


* @param fileName 文件名


*/




public void searchFile(String fileName) ...{


File file = new File(fileName);




boolean isTrue = false;




try ...{


String strLine = "";




for (int i = 0; i < conditionNum; i++) ...{


FileReader fr = new FileReader(file);


BufferedReader br = null;


br = new BufferedReader(fr);


String condition = 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 (Exception e) ...{


// TODO Auto-generated catch block


// e.printStackTrace();


}


}






/** *//**


* 在指定的绝对路径中查找指定的字符串


*


* @param path


* 绝对路径


* @param srcStr


* 要查找的字符串


*/




public void searchPath(String path) ...{


conditionNum = getConditionNum();


File file = new File(path);




if (file.isDirectory()) ...{


File[] fileList = file.listFiles();




for (int i = 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());





}


}




// 一个示例




public static void main(String[] args) ...{


// TODO Auto-generated method stub


SearchStrInPath s = new SearchStrInPath();


String path = "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("执行完毕!");


}




}

本文出自:冯立彬的博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: