我有一个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
推荐文章
- csproj文件中的“Service Include”是干什么用的?
- 如何使用try catch进行异常处理是最佳实践
- 替换字符串中第一次出现的模式
- .NET中字节的字面后缀?
- 如何删除文件中的特定行?
- 如何处理AccessViolationException
- c#忽略证书错误?
- LINQ读取XML
- 如何强制LINQ Sum()返回0而源集合是空的
- 将值附加到查询字符串
- Selenium c# WebDriver:等待元素出现
- 我如何添加双引号的字符串,是在一个变量?
- 检查字符串是否包含字符串列表中的元素
- 最好的方法在asp.net强制https为整个网站?
- 将字符串转换为System.IO.Stream