除了内存文件映射,windows下操作64位(4G以上)大文件的方法是什么呢?

clever101
博客专家认证
2018-01-09 06:15:23
使用_fseeki64和_lseeki64,4G以上的文件都超出了它的偏移长度,可行的办法是在当前位置进行叠加偏移。一种办法是内存文件映射:VC++ 大文件读写(大于4G)
...全文
639 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shakaqrj 2018-01-17
  • 打赏
  • 举报
回复
_fseeki64 4G就超过偏移长度了?确定? 还有一个fsetpos
赵4老师 2018-01-10
  • 打赏
  • 举报
回复
#define LLONG_MAX 9223372036854775807i64 /* maximum signed long long int value */ ≈9223372036G 你算错了! 容量大小从小到大:栈≤全局数据≤堆≤文件≤硬盘≤磁盘阵列≤云存储 当程序需要使用比如2GB~1TB左右的存储时,最简单的办法恐怕得是用文件读写模拟内存读写了吧。windows参考_fseeki64函数,linux参考fseeko64函数。
FILE *fA;fA=fopen("A","rb+");_fseeki64(fA,10000000000i64*sizeof(int),SEEK_SET);fputc(fA,0);//int A[10000000000];
int B;
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fread(&B,1,sizeof(int),fA);//B=A[9999999999];
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fwrite(&B,1,sizeof(int),fA);//A[9999999999]=B;
fclose(fA);
oyljerry 2018-01-10
  • 打赏
  • 举报
回复
64 API足够应付4g大小文件
smwhotjay 2018-01-10
  • 打赏
  • 举报
回复
我不信windows没提供64 的大文件访问api SetFilePointer64 xx64

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧