采用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("执行完毕!"); }}
本文出自:
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!