C#创建txt文件并保存

时间:2013-11-20 18:32:47

标签: c# forms file save

我正在尝试创建一个文件并保存文本,但它只是创建文件,任何人都可以建议问题是什么?

private void button2_Click(object sender, EventArgs e)
    {
        SaveFileDialog sfd = new SaveFileDialog();
        sfd.Filter = "Text File|*.txt";
        sfd.FileName = "Password";
        sfd.Title = "Save Text File";
        if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            string path = sfd.FileName;
            StreamWriter bw = new StreamWriter(File.Create(path));
            bw.Write(randomstring);
            bw.Dispose();
        }
    }

4 个答案:

答案 0 :(得分:3)

在致电bw.Close()之前,您需要致电bw.Dispose()。根据API:“您必须调用Close以确保所有数据都正确写入基础流。” (http://msdn.microsoft.com/en-us/library/system.io.streamwriter.close(v=vs.110).aspx

我实际上将代码更改为:

using (StreamWriter bw = new StreamWriter(File.Create(path)))
{
    bw.Write(randomstring);
    bw.Close();
}

using阻止将自动调用Dispose(),无论一切是否成功完成。

答案 1 :(得分:2)

尝试使用File.WriteAllText代替

    if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        //...
        File.WriteAllText(path, randomstring);
    }    

答案 2 :(得分:1)

bw.Write(randomstring);
bw.Dispose();

你写东西,然后完全处理对象。尝试:

bw.Write(randomstring);
bw.Close();
bw.Dispose();

答案 3 :(得分:0)

Per the documentation,您需要在处理之前致电bw.Close()。此外,您应该使用using确保所有IDisposable都已正确处理。

if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    string path = sfd.FileName;
    using (var fs = File.Create(path))
    using (StreamWriter bw = new StreamWriter(fs))
    {
        bw.Write(randomstring);
        bw.Close();
    }
}

或者只使用File.WriteAllText

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