【问题标题】:How to save a file that already exists?如何保存已经存在的文件?
【发布时间】:2021-12-28 23:58:18
【问题描述】:

我将启动一个代码编辑器供人们创建不同意的机器人,它几乎都准备好了,但我需要帮助的是在保存文件时,我创建了一个保存但当文件已经存在的人的功能必须替换,然后我创建了一个名为 currentFile 的字符串,它将存储所选文件的路径,那么我如何让它只替换文件中的文本而不需要替换文件或打开保存菜单?


String currentFile = "C:\\Program Files (x86)\\EXAMPLE\\FILE.js";

SaveFileDialog sfd = default(SaveFileDialog);
            if (fctb_code.Text.Length > 0)
            {
                sfd = new SaveFileDialog();
                //sfd.Filter = "All Files|*.*";
                //sfd.DefaultExt = "html";

                sfd.ShowDialog();


                string location = currentFile;
                string sourcecode = fctb_code.Text;
                location = sfd.FileName;
                if (!object.ReferenceEquals(sfd.FileName, ""))
                {
                    using (System.IO.StreamWriter writer = new System.IO.StreamWriter(location, false))
                    {
                        writer.Write(sourcecode);
                        writer.Dispose();
                    }
                }

我希望当文件存在时它只是替换文件中的文本,但当它不存在时它将文件另存为新文件并打开 SaveFileDialog。

【问题讨论】:

    标签: c# savefiledialog


    【解决方案1】:

    您在sfd.ShowDialog(); 下发布的所有代码都可以用一个简单的命令(和一个 if 语句)替换

    if (sfd.FileName != "")
    {
        System.IO.File.WriteAllText(currentFile, fctb_code.Text);
    }
    

    不需要 Streams 和 StreamWriters。没有迟钝的if 逻辑。

    引用the documentation for File.WriteAllText,这将为您覆盖:

    创建一个新文件,将指定的字符串写入文件,然后关闭文件。如果目标文件已经存在,则覆盖。

    【讨论】:

    • 这里需要注意的是File.WriteAllText 要求整个文本适合内存,而流允许您以最少的内存使用写入文件。然而,在这种情况下,数据已经在内存中,WriteAllText 是完美的。
    猜你喜欢
    • 2013-11-07
    • 2012-02-14
    • 2021-10-24
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    相关资源
    最近更新 更多