leora
leora

Reputation: 196499

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

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.

Upvotes: 220

Views: 273508

Answers (5)

J Scott
J Scott

Reputation: 1019

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

Upvotes: 4

Hemant
Hemant

Reputation: 19826

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.

Upvotes: 451

Thomas Danecker
Thomas Danecker

Reputation: 4685

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

Upvotes: 4

Spence
Spence

Reputation: 29332

If your code doesn't require the file to be truncated first, you can use the FileMode.OpenOrCreate to open the filestream, which will create the file if it doesn't exist or open it if it does. You can use the stream to point at the front and start overwriting the existing file?

I'm assuming your using a streams here, there are other ways to write a file.

Upvotes: 0

Guffa
Guffa

Reputation: 700322

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

Upvotes: 37

Related Questions