写字符串到文本文件,并确保它总是覆盖现有的内容。

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

255023 次浏览
System.IO.File.WriteAllText (@"D:\path.txt", contents);
  • 如果文件存在,这将覆盖它。
  • 如果文件不存在,则创建该文件。
  • 请确保您拥有在该位置写入的适当权限,否则将会出现异常。

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

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

我假设这里用的是流,还有其他方法来写文件。

通常,FileMode.Create是你要找的。

使用文件模式enum改变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 .