0

代码:

private void btnSaveFile_Click(object sender, EventArgs e)
{
    listBox1.MultiColumn = true;
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "Text File|*.txt";
    if (sfd.ShowDialog() == DialogResult.OK) ;
    {
        string path = sfd.FileName;
        BinaryWriter bw = new BinaryWriter(File.Create(path));
        foreach (string s in hello)
        {
            bw.Write(s + Environment.NewLine);
        }
    }

输出为

这

我真的不知道如何摆脱这些角色。

4

2 回答 2

3

如果要写入文本文件,请不要使用BinaryWriter。它附加了字符串的长度,解释了为什么你观察到那些奇怪的字符。

你可以使用TextWriter

using (var fileStream = File.Create(path)
using (var writer = new StreamWriter(fileStream))
{
    foreach (string s in hello) 
    {
        writer.Write(s + Environment.NewLine);
    }
}

或者在这个特定示例中,您可以使用以下方法将所有这些代码缩短为一行代码WriteAllLines

if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    string path = sfd.FileName;
    File.WriteAllLines(path, hello);
}

还要小心!;你的if陈述后面有一个尾随。这意味着无论用户是确认还是取消了文件对话框,对文件的写入总是会发生。请注意我在上一个示例中是如何删除它的。

于 2013-01-18T06:38:27.090 回答
0

尝试:

StreamWriter sw = new StreamWriter(path);

StreamWriter 非常适合在文件中写入文本。而 BinaryWriter 以二进制形式将原始类型写入流并支持以特定编码写入字符串。

于 2013-01-18T06:42:10.420 回答