查找并附加到文件而不将其加载到内存中?

Find and append to file without loading it in memory?

我正在编写一个简单的 XML 日志文件,如下所示:

<root>
 <objects>
 </objects>
</root>

第一次创建文件是这样的

using (xmlWriter = new XmlTextWriter(filePathAndName, System.Text.Encoding.UTF8))
{
    xmlWriter.Formatting = Formatting.Indented;
    xmlWriter.WriteStartDocument();
    xmlWriter.WriteStartElement("root");
    xmlWriter.WriteStartElement("objects");
    xmlWriter.WriteEndElement();
    xmlWriter.WriteEndElement();
    xmlWriter.WriteEndDocument();
    xmlWriter.Close();
}

现在我需要将对象(字符串格式的序列化数据合同)放置在对象标签内 而不将其加载到内存

我找到了很多关于如何执行此操作的建议,但所有建议都将整个文件加载到内存中,当文件很大时,这并不好。

我的想法是:

  1. 用某种 reader
  2. 打开文件
  3. 从文件末尾搜索到 </objects> 标记
  4. 存储索引并关闭 reader/file
  5. 再次打开文件,但这次是以作者的身份
  6. 将序列化数据合约写入索引(就在
  7. 关闭文件

但是我不确定如何在 C# 中正确执行此操作?

在这种情况下,我的解决方案是 XML 包含技术,它并不完美,但登录要简单得多。我可以使用 appendToFile 而不是操作或读入内存。