我在c#中使用streamreader遇到问题

时间:2012-08-17 09:59:25

标签: c#

我在使用streamreader时遇到了一些麻烦。

我正在打开来自文件对话框的电子邮件,这些电子邮件放在列表框中。 电子邮件中的每个字母都在一行上,如下图所示。

我希望电子邮件在一条线上,有人可以帮助我,这让我很头疼。

private void button2_Click(object sender, EventArgs e)
{
    OpenFileDialog ofg = new OpenFileDialog();
    ofg.Filter = "Text Files|*.txt";
    if (ofg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        var fileName = ofg.FileName;

        StreamReader sr = new StreamReader(File.OpenRead(fileName));
        var line = sr.ReadToEnd();        

        foreach (var l in line)
            listBox1.Items.Add(l.ToString());

        sr.Dispose();
    }
}

example here

4 个答案:

答案 0 :(得分:1)

        var lines = File.ReadAllLines( fileName );

        foreach (var l in lines )
        {
            listBox1.Items.Add( l );
        }

假设你有

        email1@email1.com
        email2@email2.com

在您的文件中(这是我从您的描述中理解的)。

答案 1 :(得分:1)

使用它:

string line;
while((line = reader.ReadLine()) != null)
    listBox1.Items.Add(line); 

答案 2 :(得分:0)

使用如下:

using (StreamReader sr = new StreamReader(File.OpenRead(fileName)))
{
      string line;

      while ((line = sr.ReadLine()) != null) 
      {
          listBox1.Items.Add(line.ToString()); 
      }
}

这将读取文件中的所有行,并逐行将其添加到列表框中。

答案 3 :(得分:0)

string containsl chars,因此foreach (var l ...)遍历chars in line。 你应该用

替换你的foreach
foreach( var email in line.Split(' '))

如果您的电子邮件与空格隔开。 另一种方法是文件。ReadAllLines,以防你文件中的电子邮件在不同的行...

相关问题