【问题标题】:How to read each line of file in loop? [duplicate]如何循环读取文件的每一行? [复制]
【发布时间】:2016-06-08 16:44:34
【问题描述】:

我有一个System.IO.Stream,我正在从(文件)获取内容。我执行以下操作:

using (var reader = new StreamReader(mystream))
{
  var filecontent = reader.ReadLine();
}

这只捕获一行。我想将每一行放入List<String>。怎么可能?

【问题讨论】:

  • 为什么不使用File.ReadAllLines? (因为你说你从文件中获取内容)
  • 你从哪里得到文件?我只有一个 Stream。
  • ReadAllLines 适用于小文件,但会将所有内容加载到内存中。在 OP 想要 List<string> 的特定情况下,这是一个好主意,但未来的读者要知道,这并不总是“循环读取每一行文件”的最佳方式。
  • @4thSpace: System.IO.File.ReadAllLines msdn.microsoft.com/en-us/library/…
  • Linked as duplicate post 显示了读取文件/流的多种方法(或使用stackoverflow.com/questions/1271225/… 中显示的迭代器)...但我建议首先阅读一些 C# 基础知识,例如循环(while /for) 因为它似乎是这个问题的主要问题。

标签: c# .net stream


【解决方案1】:

using 里面添加

while (reader.Peek() >= 0){
   list.add(reader.readline);
}

【讨论】:

    【解决方案2】:

    如果你有文件:

     List<string> allLines = File.ReadAllLines(fileName).ToList();
    

    如果你有 Steam 而不是文件:

    List<string> allLines = new List<string>();
        using (StreamReader reader = new StreamReader(stream))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
            allLines.Add(line); // Add to list.     
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多