0

我在使用流式阅读器时遇到了一点麻烦。

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

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

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();
    }
}

这里的例子

4

5 回答 5

1
        var lines = File.ReadAllLines( fileName );

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

假设你有

        email1@email1.com
        email2@email2.com

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

于 2012-08-17T10:03:11.137 回答
1

用这个:

string line;
while((line = reader.ReadLine()) != null)
    listBox1.Items.Add(line); 
于 2012-08-17T10:04:12.597 回答
0

使用它如下:

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

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

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

于 2012-08-17T10:05:16.400 回答
0

字符串包含字符,因此在行foreach (var l ...)中遍历字符。你应该用你的 foreach 替换

foreach( var email in line.Split(' '))

如果您的电子邮件用空格分隔。另一种方法是文件。ReadAllLines,以防您文件中的电子邮件位于不同的行...

于 2012-08-17T10:05:41.880 回答
0
using (StreamReader sr = new StreamReader(File.OpenRead(fileName))) 
{
   while (sr.Peek() >= 0) 
   {
      listBox1.Items.Add(sr.ReadLine());
   }
}

参考:http: //msdn.microsoft.com/en-us/library/system.io.streamreader.readline

于 2012-08-17T10:07:03.257 回答