【问题标题】:How to edit a specific attribute in file?如何编辑文件中的特定属性?
【发布时间】:2012-04-21 16:44:06
【问题描述】:

假设您有一个用 XML 或其他类似编码语言编写的文件。是否可以只重写一行而不是将整个文件变成一个字符串,然后更改该行,然后必须将整个字符串重写回文件?

【问题讨论】:

    标签: java file overwrite


    【解决方案1】:

    一般来说,不会。文件系统通常不支持在文件中间插入或修改数据的想法。

    如果您的数据文件是固定大小的记录格式,那么您可以编辑记录而不覆盖文件的其余部分。对于像 XML 这样的东西,您可以理论上通过插入与语义无关的空白来用较短的值覆盖一个值,但您将无法编写一个 更大的值。

    在大多数情况下,重写整个文件会更简单——如果可以的话,可以通过以流方式读取和写入(如果文件太大而无法一次性读入内存),或者只是加载整个文件进入一些内存数据结构(例如XDocument),进行更改,然后再次保存文件。 (您可能需要考虑保存到不同的文件,然后移动文件以避免在保存操作由于某种原因失败时丢失数据。)

    如果所有这些最终都过于昂贵,您应该考虑使用多个文件(因此每个文件都更小)或一个数据库。

    【讨论】:

      【解决方案2】:

      如果您要替换的行大于您要替换的新行,那么只要有某种填充是可以接受的(例如空白字符“ ”)这不会影响您的申请。

      另一方面,如果新内容大于要替换的内容,则需要将所有数据向下移动,因此您需要重写文件,或者至少从被替换的行开始。

      既然您提到了 XML,那么可能是您以错误的方式处理问题。难道您需要的是替换特定的 XML 节点?在这种情况下,您可以考虑使用 DOM 将 XML 读取到节点层次结构中,并在其中添加/更新/删除,然后再将 XML 树写回文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-28
        • 2012-01-26
        • 1970-01-01
        相关资源
        最近更新 更多