【问题标题】:Insert Text at Specified Position of A Large file在大文件的指定位置插入文本
【发布时间】:2014-08-20 01:37:23
【问题描述】:

我有一个无法加载到内存中的超大文件

现在我需要在指定位置插入文本。

插入前:

<?xml version="1.0" encoding="UTF-8"?>
<Schema>
    <Line>1</Line>
    <Line>2</Line>
    ......
    <Line>999999</Line>
</Schema>

插入后:

<?xml version="1.0" encoding="UTF-8"?>
<Schema>
    <total>999999</total>
    <Line>1</Line>
    <Line>2</Line>
    ......
    <Line>999999</Line>
</Schema>

谁能提供一些建议来做这样的事情?


背景:

我的真实情况是我为一个新创建的文件打开一个文件流。然后我用这个流创建一个 XmlWriter。

当每一行到来时,我用 XmlWriter 将相应的元素写入文件流。

但是我需要在文件的开头放置一些信息,这些信息只有在写完所有行之后才能得到,例如总行数。

感谢任何帮助。

【问题讨论】:

  • 你可以在开头保留一些空间吗,例如添加&lt;total&gt;********&lt;/total&gt; 然后就地修补数据?不是很优雅,但快速而直接。
  • 您确定总数必须在顶部吗?我不相信 XML 1.0 规范将元素顺序定义为重要的。当然,使用您的 xml 的应用程序可能......
  • @AlexD:但是不知道要预留多少空间,不然打补丁后还有多余的空间。
  • @Blorgbeard:实际上受影响的客户是我的痛点。客户必须读取千兆字节才能获得总价值。
  • @FengZhao-MSFT 你可以在&lt;total&gt;之后添加这些额外的空格。

标签: c# xml stream large-files xmlwriter


【解决方案1】:

您可以尝试将文件读取为流并将流输出到带有标签的新文件。没有整个文件加载问题。

【讨论】:

  • 也许这是唯一的解决方案。谢谢!
猜你喜欢
  • 2010-11-22
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
相关资源
最近更新 更多