将字符串写入文本文件并确保它始终覆盖现有内容。

时间:2009-08-04 05:52:27

标签: c# file text

我有一个带有C#程序的字符串,我想写入文件并始终覆盖现有内容。如果文件不存在,程序应该创建一个新文件而不是抛出异常。

5 个答案:

答案 0 :(得分:327)

System.IO.File.WriteAllText (@"D:\path.txt", contents);
  • 如果文件存在,则会覆盖它。
  • 如果该文件不存在,则会创建该文件。
  • 请确保您有适当的权限在该位置写信,否则您将获得例外。

答案 1 :(得分:27)

使用File.WriteAllText方法。如果文件不存在,则创建该文件,如果文件存在则覆盖该文件。

答案 2 :(得分:1)

通常,FileMode.Create是您正在寻找的。

答案 3 :(得分:0)

如果您的代码不需要首先截断文件,您可以使用FileMode.OpenOrCreate打开文件流,如果文件不存在则会创建文件流,如果文件不存在则打开文件流。您可以使用流指向前面并开始覆盖现有文件吗?

我假设你在这里使用流,还有其他方法来编写文件。

答案 4 :(得分:0)

使用文件模式枚举更改 File.Open 行为。这适用于二进制内容和文本。

由于 FileMode.OpenFileMode.OpenOrCreate 将现有内容加载到文件流中,如果要完全替换文件,则需要在写入流之前先清除现有内容(如果有)。 FileMode.Truncate 自动执行此步骤

// 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