从列表框中创建文本,但不包含最后一个空行



感谢您的帮助!当从列表框中创建文本文件时,文本文件的最后一行是空的,下面是我的代码:

private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog lsd = new SaveFileDialog();
if (lsd.ShowDialog() == DialogResult.OK)
{
StreamWriter writer = new StreamWriter(lsd.FileName + ".TXT");
for (int i = 0; i < listBox1.Items.Count; i++)
{

writer.WriteLine(listBox1.Items[i]);
}
writer.Close();
}
lsd.Dispose();
} 

有什么办法可以避免生成最后一行吗?

再次感谢您的帮助!

for (int i = 0; i < listBox1.Items.Count; i++)
{
if(i == listBox1.Items.Count - 1 && listBox1.Items[i].Length == 0)
break;
writer.WriteLine(listBox1.Items[i]);
}

ie -如果它是最后一行且为空,则忽略它

StreamWriter.WriteLine将文本表示一个字符跨度写入字符串,后跟行结束符。因此,可以通过对最后一项使用StreamWriter.Write来避免生成最后一行。

int lastIndex = listBox1.Items.Count - 1;
for (int i = 0; i < lastIndex; i++)
{
writer.WriteLine(listBox1.Items[i]);
}
writer.Write(listBox1.Items[lastIndex]);

参考。

private void button1_Click(object sender, EventArgs e)
{
if (listBox1.Items.Count < 1)
return;
using (SaveFileDialog lsd = new SaveFileDialog())
{
lsd.AddExtension = true;
lsd.DefaultExt = "txt";
lsd.Filter = "Text Files|*.txt";
if (lsd.ShowDialog() == DialogResult.OK)
{
using (StreamWriter writer = new StreamWriter(lsd.FileName))
{
int i;
for (i = 0; i < listBox1.Items.Count - 1; i++)
{
writer.WriteLine(listBox1.Items[i]);
}
writer.Write(listBox1.Items[i]);
}
}
}
}

最新更新