代码之家  ›  专栏  ›  技术社区  ›  Blam

文件.OpenWrite附加而不是擦除内容?

  •  45
  • Blam  · 技术社区  · 14 年前

    我使用以下命令写入文件:

    using(Stream FileStream = File.OpenWrite(FileName)) 
       FileStream.Write(Contents, 0, Contents.Length);
    

    我注意到它只是正确地写入文件,但没有首先擦除文件的内容。然后我决定简单地使用:

    File.WriteAllBytes(FileName, Contents);
    

    然而,为什么不呢文件.OpenWrite自动删除文件的内容,就像我在OpenWrite风格函数中使用的其他语言一样,并且使用一个代替附加的?

    2 回复  |  直到 14 年前
        1
  •  90
  •   Michael Petrotta user3140870    13 年前

    这是的指定行为 File.OpenWrite :

    如果文件存在,则在开始时打开文件进行写入。现有文件未被截断。

    要做你想做的事,只要做:

    using(Stream fileStream = File.Open(FileName, FileMode.Create)) 
       fileStream.Write(Contents, 0, Contents.Length);
    

    FileMode.Create 选项将导致File方法创建一个不存在的新文件,或者使用文件模式。截断如果有,给你想要的行为。或者,您可以使用 File.Create

        2
  •  24
  •   Sachin Shanbhag    14 年前

    是的,你是对的。 File.OpenWrite 不覆盖文件。

    File.Create 用于覆盖文件(如果存在)。