假如有一个文件有500M或者更大,用FILE类型读取或者FileStream来读取中间的某一段数据(二进制),是否会把整个500M的文件都载入内存中的?如果要在原来500M的文件中插入一段二进制数据,是否也是全部读取500M进内存,然后重新分配新的内存空间,把新的内容放入内存再一起写入文件?如果要实现这类从一个大文件中读取某一段或者插入一段数据,应该要怎么做的?谢谢~
调试欢乐多
在500M文件中插入一段数据是需要把文件全部读一次的,但不需要都放入内存再一起写入文件。你可以另存为一个文件,然后把原文件删除,再将另存的文件改名。
用CreateFileMapping就可以随意在一个大文件里读取和插入数据而不需要把500M都载入内存?
PS:摘自内存映射文件原来我用过这种方法处理过1G多的文件,很有效
现在的游戏用的PAK包也是用这类方法读取的?那些包可以直接把升级的文件插入或替换到包中而不需要解开或重构那个大文件,是否原理也是这类?