我有一个c#程序的字符串,我想写一个文件,总是覆盖现有的内容。如果文件不存在,程序应该创建一个新文件,而不是抛出异常。
System.IO.File.WriteAllText (@"D:\path.txt", contents);
如果文件存在,这将覆盖它。 如果文件不存在,则创建该文件。 请确保您拥有在该位置写入的适当权限,否则将会出现异常。
如果您的代码不要求首先截断文件,您可以使用FileMode。OpenOrCreate打开文件流,如果文件不存在将创建文件,如果文件存在则打开文件。您可以使用流指向前面并开始覆盖现有文件?
我假设这里用的是流,还有其他方法来写文件。
使用文件模式enum来更改文件。开放的行为。这既适用于二进制内容,也适用于文本。
因为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);
}
FileMode Enum
推荐文章
- c#测试用户是否有对文件夹的写权限
- 如何获得字典中的键列表?
- 写字符串到文本文件,并确保它总是覆盖现有的内容。
- 在参数声明中,varchar(MAX)的大小是多少?
- 如何尝试将字符串转换为Guid
- 是否已经添加了事件处理程序?
- 从另一个文件导入变量?
- Lookup()和Dictionary(Of list()的区别
- 如何从我的c#代码运行EXE文件?
- .NET控制台应用程序中的全局异常处理程序
- 字符串比较:InvariantCultureIgnoreCase vs OrdinalIgnoreCase?
- 如何将TimeSpan序列化为XML
- 在大写字母前加空格
- 初始化c#自动属性
- 枚举上最常见的c#位操作