I was using the following to write to a file:
using(Stream FileStream = File.OpenWrite(FileName))
FileStream.Write(Contents, 0, Contents.Length);
I noticed that it was simply writing to file file correctly, but didn’t wipe the contents of the file first. I then decided to simply use:
File.WriteAllBytes(FileName, Contents);
This worked fine.
However, why doesn’t File.OpenWrite automatically delete the contents of the file as the other languages i’ve used do for their OpenWrite style function, and have a instead of appending?
Is there any method to do this?
This is the specified behavior for File.OpenWrite:
To do what you’re after, just do:
Your current call is equivalent to use FileMode.OpenOrCreate, which does not cause truncation of an existing file.
The FileMode.Create option will cause the File method to create a new file if it does not exist, or use FileMode.Truncate if it does, giving you the desired behavior. Alternatively, you can use File.Create to do this directly.