File.OpenWrite appends instead of wiping contents?
This is the specified behavior for File.OpenWrite:
If the file exists, it is opened for writing at the beginning. The existing file is not truncated.
To do what you're after, just do:
using(Stream fileStream = File.Open(FileName, FileMode.Create))
fileStream.Write(Contents, 0, Contents.Length);
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.
Yes you are right. File.OpenWrite does not overwrite the file.
The File.Create is used to overwrite the file if exists.