overwriting file with File.CreateText (C#)

本文关键字:CreateText File file with overwriting | 更新日期: 2023-09-27 18:06:36

我遇到以下问题。我正在使用。net Framework 1.1,我正在尝试使用以下代码覆盖一个文件:

        try
        {
            using (StringWriter writer = new StringWriter())
            {
                Server.Execute(path, writer);
                using (StreamWriter sr = File.CreateText(filepath + fileName))
                {
                    sr.WriteLine(writer.ToString());
                }
            }
        }
        catch (Exception exc)
        {
            ...
        }

有时它工作得很好,但有时它不覆盖文件,也不会抛出异常。有人能告诉我问题可能是什么,或者如何处理为什么它不覆盖文件?

overwriting file with File.CreateText (C#)

为什么不直接:

File.WriteAllText(Path.Combine(filepath, fileName), writer.ToString())
从MSDN

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

谁能告诉我可能是什么问题或如何处理为什么不覆盖文件?

好吧,回答你的实际问题,File.CreateText(string file)的行为完全符合预期。如果filepath + fileName(以您的示例为例)是一个已经存在的文件,它将打开该文件而不是创建它。(它不覆盖)。

您可以先使用File.Exists(string file)检查文件是否存在,然后使用File.Delete(string file)

如果File.CreateText(string file)不适合你的需要,你可以尝试不同的类型。也许是FileInfo ?

微软表示:

创建或打开用于写入UTF-8编码文本的文件。

来源:https://msdn.microsoft.com/en-us/library/system.io.file.createtext%28v=vs.110%29.aspx

over write也可以通过内置文件实现。复制方法。

文件。副本有过载-

File.Copy Method (Source, Destination, OverWrite)

关于msdn的更多信息