如何用c++读写一个超过2G的大文件,目的是把一个大文件分块维护在内存中

如何用c++读写一个超过2G的大文件,目的是把一个大文件分块维护在内存中,第1张

文件可以被一部分一部分地读,这在windows里被以虚拟内存映射文件的方式实现。而不能用其本身的文件流,因为它自己是调用系统API实现的,而又缺少参数,便保险地映射全部文件到内存,而一般系统的虚拟地址空间为用户2G,服务器上才3G。而2G里显然要包括程序文件本身与环境子系统DLL们。所以剩下不足2G了,这下就不够用了,所以不能用C++里的文件流。用windows系统自带的API函数可以实现分块映射读取,当然读完一块要释放掉,不然最后还是不够用,这样就行了,你可以看书去了。

楼上的,你测试了么?可以放那么多9吗?有些事情是不可以想当然的

经测试,最大只能生成4.09G的单个文件,主要是因为程序打开超过这个大小的文件就会出错。你要生成40G的文件可以通过生成多个文件来实现,比如这里可以生成10个这样的文件

'添加窗体Form1,按钮Command1,复制如下代码:

Private Sub Command1_Click()

    Call createFiles(10) '创建10个大小约为4G的文件

    MsgBox "创建完成!"

    End

End Sub

Private Sub createFiles(intFileCount As Integer)

    Dim i, j, fileNumber As Integer

    Dim s As String

    s = Space(200000000)

    For i = 1 To intFileCount

        For j = 1 To 22

            DoEvents

            Open "c:\test" & CStr(i) For Append As #1

            Print #1, , s

            Close #1

        Next

    Next

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8101110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存