Write string to text file and ensure it always overwrites the existing content.

242,898

Solution 1

System.IO.File.WriteAllText (@"D:\path.txt", contents);
  • If the file exists, this overwrites it.
  • If the file does not exist, this creates it.
  • Please make sure you have appropriate privileges to write at the location, otherwise you will get an exception.

Solution 2

Use the File.WriteAllText method. It creates the file if it doesn't exist and overwrites it if it exists.

Solution 3

Generally, FileMode.Create is what you're looking for.

Solution 4

Use the file mode enum to change the File.Open behavior. This works for binary content as well as text.

Since FileMode.Open and FileMode.OpenOrCreate load the existing content to the file stream, if you want to replace the file completely you need to first clear the existing content, if any, before writing to the stream. FileMode.Truncate performs this step automatically

// OriginalFile:
oooooooooooooooooooooooooooooo

// NewFile:
----------------

// Write to file stream with FileMode.Open:
----------------oooooooooooooo
var exists = File.Exists(path);
var fileMode = exists
    ? FileMode.Truncate   // overwrites all of the content of an existing file
    : FileMode.CreateNew  // creates a new file

using (var destinationStream = File.Open(path, fileMode)
{
    await newContentStream.CopyToAsync(destinationStream);
}

FileMode Enum

Share:
242,898

Related videos on Youtube

leora
Author by

leora

Updated on August 04, 2021

Comments

  • leora
    leora almost 3 years

    I have a string with a C# program that I want to write to a file and always overwrite the existing content. If the file isn't there, the program should create a new file instead of throwing an exception.

  • Zach Smith
    Zach Smith about 6 years
    ah. so simple and helpful.
  • sino
    sino over 4 years
    He is asking for an existing file to override