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)
一个简单的调用应该可以做到:
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)
还有一点要注意 - 您不会希望对大文件执行此操作,因为它会处理内存中的所有内容。