我有一个很大的文本文件,我的iPad程序需要偶尔替换单行数据(newline:' n')。我该如何有效地做到这一点?立即编写整个文件不是一个选项。

我一直在研究NSFileHandle,看起来它会做我想要的。现在,我很难弄清楚如何找到X线,然后用字符串中的数据替换。我认为完成此操作后,我要做的就是致电SynchronizeFile,对吗?

我感谢您的帮助!

有帮助吗?

解决方案

如果不编写整个文件,您就无法真正这样做。您可以在行的开始,然后编写新行。但是首先,您必须找出该线路的偏移。如果您还没有,这意味着从一开始到该行读取文件。然后,您可以编写新行,但只有与原始行完全相同的长度时,只有它。如果更长的话,它将覆盖下一行 - 无法将数据插入文件中。如果新线比旧线短,那么旧线的末端将保留。相同的长度要求也很棘手。这意味着字节中的长度相同。根据编码某些字符的字符,可能需要比其他字符更多的字节。

如果您确实需要这样做,并且可以为每种情况都使用这些步骤:

  1. 阅读整个文件以找出您感兴趣的行的偏移
  2. 寻求偏移
  3. 写新线
  4. 写出您在步骤1中读取的文件的其余部分。

该算法将起作用,无论线路有多长时间或短线或编码方式。但这可能比仅写整个文件要贵,尤其是如果您在内存中都有它。

您是否真的证实了写出整个文件或在此处进行过早优化是不可接受的吗?如果您的文本文件确实很大,则应该考虑使用SQLITE等数据库或使用核心数据。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top