我正在编写一个程序,需要遍历一个大的40GB二进制文件,但我只有16GB的物理RAM。一位朋友告诉我,我可以使用文件映射来解决这个问题。我了解如何create a file mapping和reading into a file map handle以及文件映射如何将永久内存中文件的部分映射到不同的虚拟内存块以供读取。文件映射如何工作
因此,如果我正确理解这一点,我可以创建一个说10gb的缓冲区,并将第一个10gb的文件读入此缓冲区。但是当我必须读取文件上的10gb标记时,操作系统是否会自动为我获取另一个块,还是必须在我的代码中手动执行此操作?
好的。我正在构建一个64位程序。因此,如果我的理解正确,我可以在整个40GB空间中使用MapViewOfFile,并且操作系统将处理读取和写入操作? –
理论上,是的。我无法保证MapViewOfFile能够成功处理大量的请求,但值得一试。我正在假设您正在阅读现有的大文件。如果您尝试创建一个,那么您可能会受到分页文件大小的限制。 –