使用 for 循环读取一个完整的文本文件

Reading a complete text file using for loop

我正在尝试使用 for 循环读取一个文本文件,该循环 运行s 100 次。

StreamReader reader = new StreamReader("client.txt");    
for (int i=0;i<=100;i++)
{ 
   reader.readline();
}

现在如果文本文件有 100 行就可以正常工作,但如果说 700 行就不行。所以我希望循环到 运行 100 次,但在每个 [=] 中读取文件的“1%” 15=] 我会那样做吗?

如果文件大小不是太大您可以:

string[] lines = File.ReadAllLines("client.txt");

string text = File.ReadAllText("client.txt");

一次读取 1% 有点棘手,我会采用逐行读取的方法:

var filename = "client.txt";
var info = new FileInfo(filename);
var text = new StringBuilder();

using (var stream = new FileStream(filename, FileMode.Open))
using (var reader = new StreamReader(stream))
{
    while (!reader.EndOfStream)
    {
        text.AppendLine(reader.ReadLine());
        var progress = Convert.ToDouble(stream.Position) * 100 / info.Length;
        Console.WriteLine(progress);
    }
}

var result = text.ToString();

但请注意,进度不会很准确,因为 StreamReader.ReadLine(等同于 ReadLineAsync)通常会读取不止一行 - 它基本上读入缓冲区然后解释那个缓冲区。这比一次读取一个字节要高效得多,但这确实意味着流将比严格来说需要进一步推进。