免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8808 | 回复: 10
打印 上一主题 下一主题

大文件读写 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-05 16:15 |只看该作者 |倒序浏览
谁遇到过大文件读写,比如大于4G的文件,在32位操作系统里面,怎么读写?

论坛徽章:
0
2 [报告]
发表于 2007-09-05 16:16 |只看该作者
有必要一下都放入内存吗???

论坛徽章:
0
3 [报告]
发表于 2007-09-05 16:26 |只看该作者
gcc -D_FILE_OFFSET_BITS=64

论坛徽章:
0
4 [报告]
发表于 2007-09-05 16:26 |只看该作者
man llseek

论坛徽章:
0
5 [报告]
发表于 2007-09-05 16:32 |只看该作者
原帖由 hohoxu_hao115 于 2007-9-5 16:26 发表
gcc -D_FILE_OFFSET_BITS=64

我遇到过32位linux下读写大于2g文件, 用的就是这个方法

论坛徽章:
0
6 [报告]
发表于 2007-09-05 16:37 |只看该作者
原帖由 while(1) 于 2007-9-5 16:32 发表

我遇到过32位linux下读写大于2g文件, 用的就是这个方法


给你的签名找了个bug :
初始值 money = 0;  

论坛徽章:
0
7 [报告]
发表于 2007-09-05 17:33 |只看该作者
原帖由 Jiangge 于 2007-9-5 16:37 发表


给你的签名找了个bug :
初始值 money = 0;  

晕死~

论坛徽章:
0
8 [报告]
发表于 2007-09-05 19:02 |只看该作者
可以用内存映射,效率相当地高。我在windows下用过,几乎不耗费什么系统资源,但是没用过linux的

论坛徽章:
0
9 [报告]
发表于 2007-09-05 22:08 |只看该作者
比较通用的做法 是 增加 编译条件变量,另外还需要修改几个调用接口:such as: fopen, ftell, fseek, etc.

论坛徽章:
0
10 [报告]
发表于 2007-09-07 17:33 |只看该作者
用fsetpos和fsetpos,
自己顶,弄一个8G的,哇哈哈哈,

  1.         fpos_t pos = 0x00000001FFFFFFFFL;
  2.         FILE *f = fopen("C:/big.txt", "wb");
  3.         fsetpos(f, &pos);
  4.         fwrite("\0", 1, 1, f);
  5.         fclose(f);
复制代码

[ 本帖最后由 yuanchengjun 于 2007-9-7 17:39 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP