使用 File.CreateText 覆盖文件 (C#)

发布于 2024-12-01 07:57:52 字数 550 浏览 1 评论 0原文

我遇到以下问题。我正在使用 .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)
        {
            ...
        }

有时它工作正常,但有时它不会覆盖文件并且不会引发异常。有人可以告诉我问题可能是什么或者如何处理它不覆盖文件的原因吗?

I am experiencing the following problem. I am using .NET Framework 1.1 and I am trying to overwrite a file using this code:

        try
        {
            using (StringWriter writer = new StringWriter())
            {
                Server.Execute(path, writer);

                using (StreamWriter sr = File.CreateText(filepath + fileName))
                {
                    sr.WriteLine(writer.ToString());
                }
            }
        }
        catch (Exception exc)
        {
            ...
        }

Sometimes it works fine, but sometimes it does not overwrite the file and no exception is thrown. Could someone tell me what the issue may be or how to handle why it doesn't overwrite the file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

燃情 2024-12-08 07:57:52

为什么不只是:

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

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

Why not just:

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

From MSDN:
Creates a new file, writes the specified string to the file, and then closes the file. If the target file already exists, it is overwritten.

红颜悴 2024-12-08 07:57:52

有人可以告诉我问题可能是什么或者如何处理它的原因吗
不覆盖文件?

好吧,为了回答您的实际问题,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

Could someone tell me what the issue may be or how to handle why it
doesn't overwrite the file?

Well, to answer your actual question, File.CreateText(string file) is behaving exactly as intended. if filepath + fileName to use your example, is a file that already exists, it opens the file instead of creating it. (It does not overwrite).

You could first check to see if the file exists using File.Exists(string file) then File.Delete(string file).

If File.CreateText(string file) doesn't suit your needs, you could try a different type. Maybe FileInfo?

Microsoft Says:

Creates or opens a file for writing UTF-8 encoded text.

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

2024-12-08 07:57:52

覆盖写入也可以通过内置的 file.copy 方法来实现。

File.copy 过载 -

File.Copy Method (Source, Destination, OverWrite)

msdn 上的更多信息

希望这会有所帮助。

over write can also be achieved with built in file.copy method.

File.copy has overload -

File.Copy Method (Source, Destination, OverWrite)

more info on msdn

hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文