使用 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
)通常会读取不止一行 - 它基本上读入缓冲区然后解释那个缓冲区。这比一次读取一个字节要高效得多,但这确实意味着流将比严格来说需要进一步推进。
我正在尝试使用 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
)通常会读取不止一行 - 它基本上读入缓冲区然后解释那个缓冲区。这比一次读取一个字节要高效得多,但这确实意味着流将比严格来说需要进一步推进。