/** *//** * 在指定的文件名中查找对应的字符串,存在就将该文件名绝对路径打印出来 * @param fileName 文件名的绝对路径,String型 * @param srcStr 要查找的字符串,String型 */ public void searchFile(String fileName,String srcStr){ FileInfo file= new file try { FileStream file= File.Open (fileName ); BufferedReader br=new BufferedReader(fr); String strLine=""; while((strLine=br.readLine())!=null) { if(strLine.indexOf(srcStr)>0) { Console.Write (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="11111"; SearchInJspFile s=new SearchInJspFile(); s.searchPath(path, srcStr); Console.Write.println("执行完毕!"); }这种功能的话,其实最好是用lucene.net了。但是不知道你的txt里面是怎么的构造,不知道怎么分词。lucene.net标准分词是以空格实现的。 不用lucene.net的话,也可以实现,就是楼上说的正则表达式,但是性能的话。。。。不敢恭维啊。 代码如下: using System; using System.IO; using System.Collections; using System.Text.RegularExpressions; using System.Collections.Generic; using System.Linq; using System.Text; namespace Answer { /// <summary> /// 搜索存在匹配指定文本的文件类 /// </summary> class TxtSearch { /// <summary> /// 判断某个文件是否存在指定的内容 /// </summary> /// <param name="fi">文件</param> /// <param name="expression">指定内容</param> /// <returns>判断结果</returns> private static bool FileMatch(FileInfo fi,string expression) { StreamReader sr = fi.OpenText(); string fileContent; while (!sr.EndOfStream) { fileContent = sr.ReadLine(); Regex CheckReg = new Regex(expression); if (CheckReg.IsMatch(fileContent)) return true; } return false; } /// <summary> /// 指定目录及其递归子目录下所有匹配的文件 /// </summary> /// <param name="di">指定目录DirectoryInfo</param> /// <param name="expression">指定内容</param> /// <returns>文件列表</returns> private static ArrayList AllFiles(DirectoryInfo di,string expression) { ArrayList Files = new ArrayList(); foreach (FileInfo fi in di.GetFiles("*.txt")) { if (FileMatch(fi, expression)) Files.Add(fi.Name); } foreach (DirectoryInfo diNode in di.GetDirectories()) Files.AddRange(AllFiles(diNode, expression)); return Files; } /// <summary> /// 指定目录及其递归子目录下所有匹配的文件 /// </summary> /// <param name="directoryPath">指定的目录的限定路径</param> /// <param name="expression">指定内容</param> /// <returns>文件列表</returns> public static ArrayList AllFilesMatched(string directoryPath, string expression) { DirectoryInfo di = new DirectoryInfo(directoryPath); return AllFiles(di, expression); } /// <summary> /// 单层指定目录(不递归)下所有匹配的文件 /// </summary> /// <param name="di">指定的目录DirectoryInfo</param> /// <param name="expression">指定内容</param> /// <returns>文件列表</returns> private static ArrayList DirectoryFiles(DirectoryInfo di, string expression) { ArrayList Files = new ArrayList(); foreach (FileInfo fi in di.GetFiles("*.txt")) { if (FileMatch(fi, expression)) Files.Add(fi.Name); } return Files; } /// <summary> /// 单层指定目录(不递归)下所有匹配的文件 /// </summary> /// <param name="directoryPath">指定的目录的限定路径</param> /// <param name="expression">指定内容</param> /// <returns>文件列表</returns> public static ArrayList DirectoryFilesMatched(string directoryPath, string expression) { DirectoryInfo di = new DirectoryInfo(directoryPath); return DirectoryFiles(di, expression); } } }