0

ストリームリーダーに少し問題があります。

ファイルダイアログから電子メールを開いていますが、それらの電子メールはリストボックス内に配置されています。電子メールの各文字は、下の図に示すように 1 行にあります。

メールを 1 行で送信したいのですが、誰か助けてくれませんか? これが頭を悩ませています。

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))) 
{
   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 に答える
0

次のように使用します。

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

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

これにより、ファイル内のすべての行が読み取られ、リストボックスに 1 行ずつ追加されます。

于 2012-08-17T10:05:16.400 に答える
0

文字列には文字が含まれているため、行内の文字をforeach (var l ...)反復処理します。foreach を次のように置き換える必要があります

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

メールがスペースで区切られている場合。別のアプローチはファイルです。ReadAllLines、ファイル内の電子メールが別々の行にある場合...

于 2012-08-17T10:05:41.880 に答える