文本文件:逐行读取#

Rev*_*Plz 9 c# string text-files

所以,假设我有一个包含20行的文本文件,每行都有不同的文本.我希望能够有一个包含第一行的字符串,但是当我做NextLine(); 我希望它成为下一行.我试过这个,但它似乎不起作用:

string CurrentLine; 
int LastLineNumber;   
Void NextLine() 
{
     System.IO.StreamReader file = new System.IO.StreamReader("c:\\test.txt");
     CurrentLine = file.ReadLine(LastLineNumber + 1);
     LastLineNumber++;
}
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?提前致谢.

Ree*_*sey 10

一般情况下,如果您能够以打开文件的方式设计它,而不是每次都尝试重新打开文件,那会更好.

如果这不切实际,您需要ReadLine多次打电话:

string CurrentLine; 
int LastLineNumber;   
void NextLine() 
{
    // using will make sure the file is closed
    using(System.IO.StreamReader file = new System.IO.StreamReader("c:\\test.txt"))
    {
        // Skip lines
        for (int i=0;i<LastLineNumber;++i)
            file.ReadLine();

        // Store your line
        CurrentLine = file.ReadLine();
        LastLineNumber++;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这可以通过File.ReadLines以下方式简化:

void NextLine() 
{
    var lines = File.ReadLines("C:\\test.txt");

    CurrentLine = lines.Skip(LastLineNumber).First();
    LastLineNumber++;
}
Run Code Online (Sandbox Code Playgroud)


dre*_*w_w 5

一个简单的调用应该可以做到:

var fileLines = System.IO.File.ReadAllLines(fileName);
Run Code Online (Sandbox Code Playgroud)

您将需要验证文件是否存在,当然您仍然需要注意空行或无效值,但这应该为您提供基础知识。要循环文件,您可以使用以下内容:

foreach (var singleLine in fileLines) {
   // process "singleLine" here
}
Run Code Online (Sandbox Code Playgroud)

还有一点要注意 - 您不会希望对大文件执行此操作,因为它会处理内存中的所有内容。