如何以块形式读取文本文件以返回特定行

本文关键字:返回 文件 取文本 读取 | 更新日期: 2023-09-27 18:03:59

我需要能够逐行读取文本文件,并在以特定文本开始时获取行内容,但它可能并不总是在那里,这会给我null返回并影响我的datagridview。

我想做一个方法,将读取数据块,当它看到第一行(源:总是在那里)和读取其他行,如果这行不存在,然后设置变量关联到它为" "。

例如文本文件为

来源:C: '
系统:1
MRU时间:12/12/2013

来源:C: '
系统:2
MRU时间:13/12/2013

来源:C: '
MRU时间:12/10/2013
//notice no MRU

下面是我用来获取行的代码,如果它包含字符串:

 String line = file.ReadLine();
 if (line.StartsWith("source"))
        {
            richTextBox1.AppendText((line) + Environment.NewLine);        
        }
        if (line.Contains("MRU"))
        {
            richTextBox1.AppendText((line) + Environment.NewLine);
        }
        if (line.Contains("MRU time"))
        {
            richTextBox1.AppendText((line) + Environment.NewLine);
        }

如何以块形式读取文本文件以返回特定行

这是一个你所需要的控制台应用程序。根据你的需要修改一下就可以了。你的主要问题是你没有空头支票。这也被封装在更小的函数中,所以它有点干净(至少对我来说)

  static void Main(string[] args)
    {
        ReadFile();
    }
    private static void ReadFile()
    {
        StreamReader SR = new StreamReader(@"C:'Users'bharrison'Desktop'test.txt");
        Console.WriteLine("Reading file");
        while (!SR.EndOfStream)
        {
           string ReturnedValue = AnalyzeString(SR.ReadLine());
           Console.WriteLine(ReturnedValue);
        }
        Console.ReadLine();
    }
    private static string AnalyzeString(string line)
    {
        string TempLine = line;
        if (TempLine != null && TempLine != "")
        {
            if (TempLine.Contains("source"))
            {
                return TempLine;
            }
            if (TempLine.Contains("MRU"))
            {
                return TempLine;
            }
            if (TempLine.Contains("MRU Time"))
            {
                return TempLine;
            }
        }
        else
        {
            return " ";
        }
        return " ";
    }