Node.js NodeJS:如何将位置插入(不覆盖)数据到文件中?

Node.js NodeJS:如何将位置插入(不覆盖)数据到文件中?,node.js,fs,Node.js,Fs,我希望在任何位置(开始、结束、中间)插入字符串,而不重叠/覆盖现有数据 我试过使用 fs.createWriteStream(文件,{start:0,标志:'r+})但这会覆盖现有数据,并且不会按字面插入 我见过将数据读入缓冲区然后再将其重写到文件中的解决方案,但这对我来说不起作用,因为我甚至需要处理大数据,而缓冲区有其局限性 对此有何想法?通常的操作系统(Windows、Unix、Mac)没有支持将数据插入文件而不重写随后发生的所有内容的文件系统。因此,您不能直接执行常规文件中的要求 您的一些

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

我试过使用

fs.createWriteStream(文件,{start:0,标志:'r+})
但这会覆盖现有数据,并且不会按字面插入

我见过将数据读入缓冲区然后再将其重写到文件中的解决方案,但这对我来说不起作用,因为我甚至需要处理大数据,而缓冲区有其局限性


对此有何想法?

通常的操作系统(Windows、Unix、Mac)没有支持将数据插入文件而不重写随后发生的所有内容的文件系统。因此,您不能直接执行常规文件中的要求

您的一些技术选择包括:

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

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

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


  • 相关答案:

    通常的操作系统(Windows、Unix、Mac)没有支持将数据插入文件而不重写随后发生的所有内容的文件系统。因此,您不能直接执行常规文件中的要求

    您的一些技术选择包括:

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

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

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

  • 相关回答:

    所有编程语言的标准解决方案是保存到另一个文件,然后在完成时删除原始文件并重命名新文件。例如,如果您有foo.txt,保存到foo.tmp,然后在完成时删除foo.txt并将foo.tmp重命名为foo.txt在所有编程语言中的标准解决方案是保存到另一个文件,然后在完成时删除原始文件并重命名新文件。例如,如果您有foo.txt,则保存到foo.tmp,然后在完成后删除foo.txt并将foo.tmp重命名为foo.txt