我刚开始学习,在处理文件时遇到了问题。我有一个方法,它有两个输入,一个在我想要的行首(lineStart)另一个在行尾(lineEnd)我需要的方法,提取这两个数字之间的我,并写入文件。
特异) lineStart = 20, lineEnd = 90, in output必须= 21-89行txt文件
string[] lines = File.ReadAllLines(@"");
int lineStart = 0;
foreach (string line0 in lines)
{
lineStart++;
if (line0.IndexOf("target1") > -1)
{
Console.Write(lineStart + "n");
}
}
int lineEnd = 0;
foreach (string line1 in lines)
{
lineEnd++;
if (line1.IndexOf("target2") > -1)
{
Console.Write(lineEnd);
}
}
// method grabText(lineStart,lineEnd){}
enter code here
这只是一行代码
string[] lines = File.ReadLines(@"").Skip(lineStart).Take(lineEnd-lineStart);
还请注意,我使用ReadLines而不是ReadAllLines。第一种方法不会将所有内容加载到内存中。
行距的界限不是很清楚,但当然,调整计算方法很容易
如果你的文本文件很大,不要把它读入内存。也不要查找索引,只是逐行处理:
bool writing = false;
using var sw = File.CreateText(@"C:somepathto.txt");
foreach(var line in File.ReadLines(...)){ //don't use ReadAllInes, use ReadLines - it's incremental and burns little memory
if(!writing && line.Contains("target1")){
writing = true; //start writing
continue; //don't write this line
}
if(writing){
if(line.Contains("target2"))
break; //exit loop without writing this line
sw.WriteLine(line);
}
}