使用SaveFileDialog保存文件中的意外字符

时间:2013-01-18 06:29:23

标签: c# .net winforms savefiledialog

代码:

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

的输出

this

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

2 个答案:

答案 0 :(得分: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。这意味着无论用户是否确认或取消了文件对话框,对文件的写入都将始终。请注意我在上一个示例中是如何删除它的。

答案 1 :(得分:0)

尝试:

StreamWriter sw = new StreamWriter(path);

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