NodeJS:如何在文件中位置插入(不覆盖)数据



我想在任何位置(开始、结束、中间(插入一个字符串,而不重叠/覆盖现有数据。

我试过使用

fs.createWriteStream(file, {start: 0, flags: 'r+'}),但这会覆盖现有数据,并且不会直接插入。

我见过将数据读取到缓冲区中,然后再次将其重写到文件中的解决方案,这对我来说不起作用,因为我需要处理即使是大数据,缓冲区也有其局限性。

对此有什么想法吗?

通常的操作系统(Windows、Unix、Mac(没有支持在不重写之后的所有内容的情况下将数据插入文件的文件系统。因此,您不能直接按照常规文件中的要求执行操作。

您的一些技术选择是:

  1. 您将之后的所有数据重写到文件中的新位置,实质上是将其在文件中向上移动,然后您可以在所需位置写入新内容。注意,在不覆盖需要保存的数据的情况下执行此操作有点棘手。基本上,你必须从文件的末尾开始,读取一个块,将其写入一个新的更高的位置,将一个块放回原处,重复,直到到达插入位置。

  2. 您可以创建自己的小文件系统,其中逻辑文件由通过某种索引链接在一起的多个文件组成。然后,要插入一些数据,您可以将一个文件一分为二(这涉及到重写一些数据(,然后可以在其中一个拆分文件的末尾插入。这可能非常复杂,非常迅速。

  3. 您可以将数据保存在数据库中,在那里可以更容易地插入新的数据元素,并保留某种索引,以确定您可以查询的数据顺序。数据库的业务是管理如何在磁盘上存储数据,同时为您提供与数据在磁盘上的存储方式没有直接链接的数据视图。

相关答案:使用NodeJS在大文件中合并几行或几字的最佳方式是什么?

最新更新