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

我正在使用以下来写入一个文件:

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

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

 File.WriteAllBytes(FileName, Contents); 

这工作得很好。

但是,为什么File.OpenWrite自动删除文件的内容,因为我用它们的OpenWrite风格函数做的其他语言,而不是附加?

有没有办法做到这一点?

这是File.OpenWrite的指定行为:

如果文件存在,则在开始时打开文件。 现有文件不被截断。

要做你以后的事情,只要做:

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

您当前的调用等同于使用FileMode.OpenOrCreate,它不会导致现有文件的截断。

FileMode.Create选项将导致File方法创build一个新的文件,如果它不存在,或者使用FileMode.Truncate,如果它,给你所需的行为。 或者,您可以使用File.Create直接执行此操作。

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

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