如何从C#中的文件中读取特定文本

时间:2011-04-25 05:59:32

标签: c#

HI, 我正在学习C#的过程并试图在我的应用程序中读取文件。但我不想阅读完整的文件我只想阅读该文件中的特定文本,并希望在文本框中显示该文本.... 可以请任何帮助我,我想知道我可以用来从文件中读取特定文本的方法..

先谢谢

Parag Deshpande

4 个答案:

答案 0 :(得分:4)

假设这些是文本文件,只需打开文件并通读它,搜索您要搜索的内容。当你找到它时,不要再读它了。 File.ReadLines()将为您执行此操作,并且不会在开始时读取整个文件,但会在完成此操作时为您提供行。

var filename = @"c:\path\to\my\file.txt";
var searchTarget = "foo";
foreach (var line in File.ReadLines(filename))
{
    if (line.Contains(searchTarget))
    {   // found it!
        // do something...

        break; // then stop
    }
}

否则,如果您不使用C#4.0,请使用StreamReader,您仍然可以以相同的方式完成相同的操作。再次,阅读,直到找到你的行,做某事然后停止。

string line = null;
using (var reader in new StreamReader(filename))
{
    while ((line = reader.ReadLine()) != null)
    {
        if (line.Contains(searchTarget))
        {   // found it!
            // do something...

            break; // then stop
        }
    }
}

如果您正在搜索特定模式而不仅仅是特定单词,则需要将正则表达式与此结合使用。

答案 1 :(得分:1)

如果您正在学习,最好使用str = IO.File.ReadAllText(fileName)读取整个文件,然后在字符串中找到您想要的内容。阅读您需要使用StreamReader的部分文本,并且要复杂得多。

答案 2 :(得分:1)

通常,我们需要逐个读取每一行。一些代码如下:

try {
    using (FileStream fs = new FileStream(@"c:\abc.txt", FileMode.Open)) {
        using (StreamReader reader = new StreamReader(fs, Encoding.UTF8)) {
            string line = null;
            while ((line = reader.ReadLine()) != null) {
                Console.WriteLine(line);
                if (line.Contains("keyword")) {

                }
                // or using Regex
                Regex regex = new Regex(@"^pattern$");
                if (regex.IsMatch(line)) {

                }
            }
        }
    }
} catch (Exception ex) {
    Trace.WriteLine(ex.ToString());
}

答案 3 :(得分:0)

您无法从特定位置读取。您必须阅读整个内容,丢弃您不需要的部分,然后阅读,直到您阅读所需的位置。

另外请注意,既然您说要填充文本框,可能需要考虑某种包含单个文本框所需值的XML文件。