我在使用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();
}
}
答案 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( var email in line.Split(' '))
如果您的电子邮件与空格隔开。 另一种方法是文件。ReadAllLines,以防你文件中的电子邮件在不同的行...