c# - File.ReadAllLines 或 Stream Reader

标签 c# winforms stream .net

我们可以使用 StreamReader 读取文件或使用 File.ReadAllLines .

例如,我想将每一行加载到 Liststring[] 中,以便对每一行进行进一步操作。

string[] lines = File.ReadAllLines(@"C:\\file.txt");

foreach(string line in lines)
{
     //DoSomething(line);
}

using (StreamReader reader = new StreamReader("file.txt"))
{
    string line;

    while ((line = reader.ReadLine()) != null)
    {
       //DoSomething(line); or //save line into List<string>
    }
}

//if list is created loop through list here 

应用程序遇到不同大小的文本文件。偶尔会从几 KB 增长到 MB

我的问题是,哪一种是首选方式,为什么应该首选一种方式?

最佳答案

如果要处理文本文件的每一行而不将整个文件加载到内存中,最好的方法是这样的:

foreach (var line in File.ReadLines("Filename"))
{
    // ...process line.
}

这避免了加载整个文件,并使用现有的 .Net 函数来执行此操作。

但是,如果由于某种原因您需要将所有字符串存储在一个数组中,您最好只使用 File.ReadAllLines() - 但如果您只使用 foreach 访问数组中的数据,然后使用 File.ReadLines()

关于c# - File.ReadAllLines 或 Stream Reader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23989677/

相关文章:

使用 HttpHandler 进行对象序列化时出现 java.io.EOFException 错误

audio - gst-launch-1.0不能通过UDP传输音频/视频并将其同时显示在窗口上

c# - 将 winform 应用程序灰色化,打开的对话框除外

c# - 多个类和表单的样式/架构健全性检查

c++ - 如何将 System::Drawing::Image^ 转换为无符号字符

c# - 把上午改成下午?

stream - 在多个闭包中表达变量对的生命周期

c# - 多次更新对象

c# - .NET 线程池是否应该在启动时创建最少数量的工作线程?

c# - 这个可以进一步优化吗