创建或打开文件,然后向其追加数据

本文关键字:追加 数据 然后 文件 创建 | 更新日期: 2023-09-27 18:17:04

我们可以使用这样的代码打开或创建文件,然后在其中写入一些数据(所有内容将被替换)。

using (var file = File.Open(path, FileMode.OpenOrCreate))
    using (var stream = new StreamWriter(file))
        stream.WriteLine(_message);

或者我们可以使用下面的代码在文件的末尾添加数据,假设该文件存在。

using (var file = File.Open(path, FileMode.Append))
    using (var stream = new StreamWriter(file))
        stream.WriteLine(_message);

有没有办法把这三件事结合起来:((Create || Open) &追加)到文件?

创建或打开文件,然后向其追加数据

如果要向文件追加数据,只需调用File.Seek(0, SeekOrigin.End)。这将文件指针设置为文件的末尾,即使用FileMode.Append打开文件后的位置。

例如:

using (var file = File.Open(path, FileMode.OpenOrCreate))
{
    file.Seek(0, SeekOrigin.End);
    using (var stream = new StreamWriter(file))
        stream.WriteLine(_message);
}

您可以创建自己的FileStream工厂,或者您可以像这样在一行中完成。

using (var file = File.Exists(path) ? File.Open(path, FileMode.Append) : File.Open(path, FileMode.CreateNew))
using (var stream = new StreamWriter(file))
    stream.WriteLine(_message);

From Documentation of FileMode.Append:

如果文件存在,则打开该文件,并查找到文件的末尾,或创建一个新文件。这需要追加权限。FileMode。附加只能与FileAccess.Write结合使用。试图寻找在文件结束之前的位置抛出IOException异常,任何读取尝试都失败,并抛出NotSupportedException例外。由于

源learn.microsoft.com

所以Append就是你想要的

这是一个老问题,但它可能对某人有所帮助

可以通过ORing打开

类型
using (var file = File.Open(path, FileMode.OpenOrCreate | FileMode.Append))