我有一个带有C#程序的字符串,我想写入文件并始终覆盖现有内容。如果文件不存在,程序应该创建一个新文件而不是抛出异常。
答案 0 :(得分:327)
System.IO.File.WriteAllText (@"D:\path.txt", contents);
答案 1 :(得分:27)
使用File.WriteAllText
方法。如果文件不存在,则创建该文件,如果文件存在则覆盖该文件。
答案 2 :(得分:1)
通常,FileMode.Create
是您正在寻找的。 p>
答案 3 :(得分:0)
如果您的代码不需要首先截断文件,您可以使用FileMode.OpenOrCreate打开文件流,如果文件不存在则会创建文件流,如果文件不存在则打开文件流。您可以使用流指向前面并开始覆盖现有文件吗?
我假设你在这里使用流,还有其他方法来编写文件。
答案 4 :(得分:0)
使用文件模式枚举更改 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);
}