0

首先,我不是使用 c# 最有经验的人,到目前为止我所做的唯一一件事就是阅读整个文本文件。

我想阅读文本文件的最后几行,我最终需要对几个文本文件执行此操作,并且每个文本文件的格式相同,大约有 80 行我想要的信息当到达“#Footer”这个词时省略,如果可能的话,我想阅读该特定词之后的所有行(大约我将在每个“#Footer”这个词之后保留大约 6/7 行文本文件)。

关于我将如何解决这个问题的任何想法?谢谢

4

3 回答 3

6

您可以使用不需要将整个文件加载到内存的File.ReadLines 。

var lines = File.ReadLines(fname)
            .SkipWhile(line => !line.StartsWith("#Footer"))
            .Skip(1)
            .ToList();

编辑

Console.WriteLine(String.Join(Environment.NewLine, lines));
于 2013-11-02T16:19:38.510 回答
0
 private  String GetFooter(String filePath)
        {

            String inputText = "#Footer";
            String footerText ="";
            String [] allFileLines=(String[])File.ReadLines(filePath).ToArray();
            int footerLineNo = -1;
            for (int i = 0; i < allFileLines.Length; i++)
            {
                if (allFileLines[i].Contains(inputText))
                    footerLineNo = i;
            }

            if (footerLineNo > -1)
            {
                for (int i = footerLineNo + 1; i < allFileLines.Length; i++)
                    footerText += allFileLines[i]+"\n";
            }
            return footerText;
        }
于 2013-11-02T16:27:07.620 回答
0

尝试这个

        bool check= false;
        string myline;
        string mytext = "";
        StreamReader reader = new StreamReader("temp.txt");
        while ((myline= reader.ReadLine()) != null)
        {
            if (myline.Contains("#Footer") || check)
            {
                check= true;
                mytext += line;
            }
        }
于 2013-11-02T16:27:56.653 回答