首先,我不是使用 c# 最有经验的人,到目前为止我所做的唯一一件事就是阅读整个文本文件。
我想阅读文本文件的最后几行,我最终需要对几个文本文件执行此操作,并且每个文本文件的格式相同,大约有 80 行我想要的信息当到达“#Footer”这个词时省略,如果可能的话,我想阅读该特定词之后的所有行(大约我将在每个“#Footer”这个词之后保留大约 6/7 行文本文件)。
关于我将如何解决这个问题的任何想法?谢谢
首先,我不是使用 c# 最有经验的人,到目前为止我所做的唯一一件事就是阅读整个文本文件。
我想阅读文本文件的最后几行,我最终需要对几个文本文件执行此操作,并且每个文本文件的格式相同,大约有 80 行我想要的信息当到达“#Footer”这个词时省略,如果可能的话,我想阅读该特定词之后的所有行(大约我将在每个“#Footer”这个词之后保留大约 6/7 行文本文件)。
关于我将如何解决这个问题的任何想法?谢谢
您可以使用不需要将整个文件加载到内存的File.ReadLines 。
var lines = File.ReadLines(fname)
.SkipWhile(line => !line.StartsWith("#Footer"))
.Skip(1)
.ToList();
编辑
Console.WriteLine(String.Join(Environment.NewLine, lines));
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;
}
尝试这个
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;
}
}