`
gzj316
  • 浏览: 34990 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

查找字符串

阅读更多
        /** *//**
     * 在指定的文件名中查找对应的字符串,存在就将该文件名绝对路径打印出来
     * @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);
        }
    }
} 
 

 

分享到:
评论

相关推荐

    串口与单片机通信 查找字符串中的特定子串

    本文将深入探讨串口与单片机通信的基本原理以及如何在串行通信中查找字符串中的特定子串。 首先,串口通信的基础是异步串行通信协议,如RS-232,它定义了电压标准、数据速率、信号线等规范。在单片机中,通常会使用...

    oracle遍历数据库查找字符串

    本文将深入探讨如何使用Oracle遍历数据库查找字符串,以及一个简化此过程的工具。 标题"Oracle遍历数据库查找字符串"暗示了一个实用的解决方案,它允许用户快速搜索Oracle数据库中的特定文本字符串,无需手动编写...

    VC查找字符串,修改字符串

    VC写的查找字符串,修改字符串 可以通过查找关键字下面的关键字符串

    方便的查找字符串出现的次数

    ### 方便的查找字符串出现的次数 在编程领域中,经常需要处理文本数据,其中一项常见任务就是统计特定字符串在一段文本中出现的次数。本文将详细介绍如何利用Visual Basic for Applications (VBA)来实现这一功能,...

    matlab开发-查找字符串文本文件

    本教程将重点讲解如何在MATLAB中查找字符串文本文件,以及如何实现这一功能。 首先,我们需要了解MATLAB中的基本文本操作函数。`fopen()`函数用于打开一个文件,`fgets()`或`fread()`用于读取文件内容,`fclose()`...

    任意文件中查找字符串程序_

    ### 任意文件中查找字符串程序知识点解析 #### 一、背景与需求 在早期的计算机环境中,DOS操作系统因其简洁高效的特点,在很长一段时间内占据着重要的地位。在DOS环境下,用户经常需要查找指定文件中是否包含特定的...

    linux查找字符串方法

    当今社会linux系统使用十分广泛,简单的linux查找字符串命令方便大家使用,欢迎下载!

    MFC 查找文件中指定字符串

    - 字符串查找算法:可以使用C++标准库中的std::string类提供的find成员函数来查找字符串。每次找到目标字符串时,记录下位置(行号)和次数。 4. **用户界面** - MFC对话框:程序可能使用CDialog派生类创建一个...

    从文本文件中查找字符串

    本主题聚焦于“从文本文件中查找字符串”,这是一个常见的需求,例如在源代码中寻找特定函数或变量,或者在日志文件中查找关键信息。这个过程可以帮助开发者定位问题,理解代码逻辑,或者对数据进行分析。 首先,...

    查找字符串出现否,及出现次数

    根据给定文件的信息,本文将围绕“查找字符串出现否,及出现次数”的主题进行深入探讨。此主题涉及到了计算机编程中的字符串处理技术,主要聚焦于如何在一段文本中找到特定子串的所有出现位置及其出现次数。 ### ...

    自写PHP strpos() 函数 查找字符串在另一字符串中第一次出现的位置

    自写PHP strpos() 函数 查找字符串在另一字符串中第一次出现的位置. https://blog.csdn.net/qq_40534785/article/details/87939551

    多个文件中查找字符串

    "多个文件中查找字符串"这个主题涉及到的是如何有效地在一系列文件中定位特定的文本片段。以下是对这个主题的详细解释: 一、基础概念: 1. 文件:在计算机系统中,文件是数据的集合,可以包含文本、图片、音频、...

    Oracle查找字符串中某字符出现的次数

    select f_find('Ap@2233ll@@l@@','@') from dual 返回结果为5,代表‘@’在该字符串中出现5次。 同理 select f_find('Ap@223SWEQQQ3ll@@l@@','Q') from dual---返回3,代表Q在字符串中出现了3次, select f_find('我...

    c 查找字符串

    在IT领域,尤其是在编程中,查找字符串和模式匹配是至关重要的技术。在Linux环境中,C语言经常被用来实现这些功能,因为它的效率高且灵活性强。本文将详细讲解"Linux C查找字符串"的相关知识点,包括基本概念、KMP...

    查找字符串中最小字符串-C语言代码

    在C语言中,查找字符串中最小字符串的问题是一个基础但有趣的编程练习。这个问题通常涉及比较字符串长度,找到字符串数组中长度最短的那一个。这里,我们将会深入探讨如何使用C语言来解决这个问题,并通过实际代码...

    基础汇编程序(4)查找字符串中的指定字符

    在数据段中,首先定义了几个字符串用于程序的输出提示,以及一个长度为100H的存储区域,其中填充了特定的字符。具体如下: - `s1`:提示用户输入一个字符; - `s2`:程序运行结束后输出的提示信息; - `string`:...

    python查找字符串

    在处理自然语言任务,比如CONLL评测时,查找字符串的能力尤为关键。CONLL(CoNLL,Conference on Natural Language Learning)是自然语言处理领域的一个知名评测比赛,涉及诸如句法分析、命名实体识别等任务,而这些...

    查找字符串中出现重复次数最多的字符

    这个名为`FindChar.java`的程序实现了查找字符串中出现重复次数最多的字符的功能。通过调用`findMostFrequentChar`方法并传入字符串,我们可以获取出现频率最高的字符。在`main`方法中,我们给出了一个测试例子,...

    java-查找字符串介绍

    ### Java查找字符串知识点详解 #### 一、简介 在Java编程中,经常需要对字符串进行查找操作,尤其是在处理文本分析、数据验证等场景时尤为重要。Java标准库提供了强大的`Pattern`和`Matcher`类来支持正则表达式的...

Global site tag (gtag.js) - Google Analytics