【发布时间】:2010-11-16 14:04:39
【问题描述】:
我有一个带有 C# 程序的字符串,我想将其写入文件并始终覆盖现有内容。如果文件不存在,程序应该创建一个新文件而不是抛出异常。
【问题讨论】:
我有一个带有 C# 程序的字符串,我想将其写入文件并始终覆盖现有内容。如果文件不存在,程序应该创建一个新文件而不是抛出异常。
【问题讨论】:
使用文件模式枚举来更改File.Open 行为。这适用于二进制内容和文本。
由于FileMode.Open 和FileMode.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);
}
【讨论】:
System.IO.File.WriteAllText (@"D:\path.txt", contents);
【讨论】:
通常,FileMode.Create 是您要查找的内容。
【讨论】:
如果您的代码不需要首先截断文件,您可以使用 FileMode.OpenOrCreate 打开文件流,如果文件不存在则创建文件,如果文件存在则打开文件。您可以使用流指向前面并开始覆盖现有文件吗?
我假设您在这里使用流,还有其他方法可以写入文件。
【讨论】:
使用File.WriteAllText 方法。如果文件不存在则创建该文件,如果存在则覆盖它。
【讨论】: