C++ 向大文件添加头的最佳方法是什么

C++ 向大文件添加头的最佳方法是什么,c++,file,header,io,C++,File,Header,Io,如果文件大小约为1-2GB,向现有文件添加头(例如文件元数据)的最佳方法是什么 在C++中,最好的方法是简单地将头写入新文件,然后附加旧文件的内容 C++没有提供在现有文件开头插入的方法,因此这是最好的选择。只要确保从旧文件中读取足够大的块,并将它们附加到新文件中即可。虽然缓冲将减轻在小块中执行此操作的大部分问题,但仍会因更多函数调用而导致性能下降 这可能是最小的,但它仍然存在。对于2G文件,我可能会先将其分为半个gig块,除非内存非常宝贵。这允许更大的文件大小而不会有太多的内存浪费,并且四次读

如果文件大小约为1-2GB,向现有文件添加头(例如文件元数据)的最佳方法是什么


在C++

中,最好的方法是简单地将头写入新文件,然后附加旧文件的内容

C++没有提供在现有文件开头插入的方法,因此这是最好的选择。只要确保从旧文件中读取足够大的块,并将它们附加到新文件中即可。虽然缓冲将减轻在小块中执行此操作的大部分问题,但仍会因更多函数调用而导致性能下降

这可能是最小的,但它仍然存在。对于2G文件,我可能会先将其分为半个gig块,除非内存非常宝贵。这允许更大的文件大小而不会有太多的内存浪费,并且四次读/写调用不太可能是性能问题

但是,就像所有的优化一样,测量,不要猜测。有各种低级别的东西会影响性能,C++标准文档没有提及(并且正确地)。因为你的问题没有提到具体的操作系统,所以我的回答基于此,但是这些具体的操作系统可能(a)反应不同;(b)提供其他可以更快进行的非标准调用。

在任何语言中,唯一的方法是将头写入一个新文件,将旧文件的内容复制到该文件,然后重命名该文件。

取决于(1)文件系统及其参数(如块的大小),(2)必须预加的头的大小,(3)谁在写文件


如果您自己生成文件(1-2Gb),那么只需在文件开头为头保留字节。

如果您真的想获得更高的性能,我想您也可以通过一些低级文件系统操作来完成。但我不建议你沿着那条路走


我也喜欢Sege Dundich发布的关于在最初编写文件时为头文件保留空间的想法,但您可能没有这个选项。

我想这更多地与文件系统相关,而不是与语言相关。Re:half gig chunks,请参阅。