在c++(windows)中连接/附加/合并文件,而不进行复制

concatenate/append/merge files in c++ (windows) without coping

本文关键字:文件 复制 合并 附加 c++ windows 连接      更新时间:2023-10-16

如何在windows上使用c/c++将几个大文件(总大小~3Tb)连接到一个文件中
我不能复制数据,因为这需要太多时间,所以我不能使用:

  • cmd副本
  • 将一个文件追加到另一个文件(https://msdn.microsoft.com/en-us/library/windows/desktop/aa363778%28v=vs.85%29.aspx)
  • 依此类推(stream::readbuf(),…)

我只需要将几个文件表示为一个文件。

如果这只是在你自己的程序中,那么你可以创建一个类,将文件粘合在一起,这样你就可以阅读它,并将其作为一个单独的文件。

如果你想拥有一个单独的文件。那么不,不可能。这需要打开文件1并附加其他文件。或者创建一个新文件并附加所有文件。C/C++库和windows API都没有连接文件的方法

即使这样的API是可用的,它也会受到限制,因为第一个文件的大小必须是磁盘分配大小的倍数。真的非常低的水平,假设分配规模的倍数得到满足。。。是的,如果你卸载驱动器,物理覆盖文件系统并扰乱文件系统结构,你可以将文件"缝合"在一起,但这对FAT来说是一个挑战,对NTFS来说几乎是不可能的。