【问题标题】:Read data from a file line by line [closed]逐行从文件中读取数据[关闭]
【发布时间】:2013-03-07 15:22:52
【问题描述】:

我目前正在打开一个文件并将其显示在消息框上。

private void button2_Click_1(object sender, EventArgs e)
{
    //OpenFileDialog1.ShowDialog();
    OpenFileDialog file = new OpenFileDialog();
    file.FileName = "";
    file.Title = "Open A Text document.";
    file.Filter = "(*.gc)|*.gc|(*.etf)|*.etf|(*.txt)|*.txt|(*.GC)|*.GC|(*.tap)|*.tap";
    DialogResult result = file.ShowDialog();
    if (result == DialogResult.OK)
    {
        System.IO.StreamReader OpenFile = new System.IO.StreamReader(file.FileName);
        textBox1.Text = OpenFile.ReadToEnd();
        OpenFile.Close();


    }

    if (file.FileName.Length > 0)
    {
        OpenFile(file.FileName);
    }

但我需要逐行读取文件并将其显示在消息框上。有没有办法更改此代码。

【问题讨论】:

  • 您是说要为文件中的每一行显示一个单独的消息框吗?
  • 使用 ReadLine() 代替 ReadToEnd
  • 我想在同一个消息框中显示
  • @Sthn 那么您想在一个消息框中显示整个文件吗?你试过MessageBox.Show(OpenFile.ReadToEnd());吗?
  • @Sthn 为什么需要逐行阅读

标签: c# .net file-io


【解决方案1】:

有一个File.ReadLines 方法返回一个 IEnumerable,所以你可以这样做:

foreach(var line in File.ReadLines("myfile.txt")){
   //Do stuff with line
}

【讨论】:

  • +1 不知道返回 IEnumerable 的 ReadLines
  • @lazyberezovsky - 整个 .Net 4.0 中都有很多微妙的 API 改进 IEnumerable 友好 IO 就是其中之一,是上帝为 LINQ 发送的。
  • 是的,我知道一些(比如 Directory.EnumerateFiles),但这是我第一次看到 ReadLines :)
  • @lazyberezovsky - 4.5 中的所有异步内容也是惊人的 :)
【解决方案2】:

考虑使用StreamReader.ReadLine() 方法。

【讨论】:

    【解决方案3】:

    这正是ReadLine 方法的用途

    while (OpenFile.Peek() >= 0) 
    {
        MessageBox.Show(OpenFile.ReadLine());
    }
    

    【讨论】:

    • 如果我想使用文本框而不是消息框,如何使用它
    • 使用textBox.Text += OpenFile.ReadLine() 或类似的东西。
    【解决方案4】:

    你试过OpenFile.ReadLine()方法吗?


    或者,更激进的方法

    string[] lines = OpenFile.ReadToEnd().Split('\n');
    

    【讨论】:

      【解决方案5】:

      从文件中读取所有行的最简单方法是File.ReadAllLines 方法(内部使用StreamReader):

      foreach(string line File.ReadAllLines(fileName))
          MessageBox.Show(line);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-25
        • 2012-05-27
        • 2013-04-30
        • 1970-01-01
        • 1970-01-01
        • 2018-05-17
        • 1970-01-01
        相关资源
        最近更新 更多