以下的做法整理自论坛上的帖子。

如何create大文件

要大就非常大,1T吧。

有两种方法:

一.dd

dd if=/dev/zero of=1T.img bs=1G seek=1024 count=0

bs=1G表示每一次读写1G数据,count=0表示读写0次,seek=1024表示略过1024个Block不写,前面block size是1G,所以共略过1T!

这是创建大型sparse文件最简单的方法。

二.ftruncate64/ftruncate

如果用系统函数就稍微有些麻烦,因为涉及到宏的问题。我会结合一个实际例子详细说明,其中OPTION标志的就是测试项。

文件sparse.c:

//OPTION 1:是否定义与大文件相关的宏

#define _LARGEFILE_SOURCE

#define _LARGEFILE64_SOURCE

#define _FILE_OFFSET_BITS 64

#include

#include

#include

#include

#include

#include

#define FILENAME "bigfile"

#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)

int main(int argc, char **argv)

{

int fd, ret;

off_t offset;

int total = 0;

if ( argc >= 2 )

{

total = atol(argv[1]);

printf("total=%d\n", total);

}

//OPTION 2:是否有O_LARGEFILE选项

//fd = open(FILENAME, O_RDWR|O_CREAT|O_LARGEFILE, 0644);

fd = open(FILENAME, O_RDWR|O_CREAT, 0644);

if (fd < 0) {

perror(FILENAME);

return -1;

}

offset = (off_t)total *1024ll*1024ll*1024ll;

printf("offset=%ld\n", offset);

//OPTION 3:是否调用64位系统函数

//if (ftruncate64(fd, offset) < 0)

if (ftruncate(fd, offset) < 0)

{

printf("[%d]-ftruncate64 error: %s\n", errno, strerror(errno));

close(fd);

return 0;

}

close(fd);

printf("OK\n");

return 0;

}

测试环境:

linux:/disk/test/big # gcc --version

gcc (GCC) 3.3.5 20050117 (prerelease) (SUSE Linux)

linux:/disk/test/big # uname -a

Linux linux 2.6.11.4-20a-default #1 Wed Mar 23 21:52:37 UTC 2005 i686 i686 i386 GNU/Linux

测试结果

linux文件读写 c语言,Linux 下 C语言大文件读写(大于4G)相关推荐

  1. windows下快速创建大文件

    windows下快速创建大文件 F:/>fsutil file createnew wu 20480000000 已创建文件 F:/wu 也可以使用API SetEndOfFile

  2. 关于tomcat环境下上传大文件遇到的问题及解决办法

    转载自:http://blog.csdn.net/tqwwilliam/article/details/7108247 问题描述: 关于tomcat环境下上传大文件遇到的问题及解决办法 解决方案: 1 ...

  3. 4种大文件传输工具和软件,用于共享大文件

    无论是个人还是与团队一起工作,大文件传输软件和网站都能协助提高工作效率.有效地管理工作内容.疫情原因有时我们不得不居家办公,在这种情况下可以分享文件的工具就显得尤为重要. 每个公司都需要一个文件传输软 ...

  4. pandas使用to_feather函数将dataframe保存为feather文件(需要依赖pyarrow包)提升大文件读取效率、pandas使用read_feather函数读取feather文件

    pandas使用to_feather函数将dataframe保存为feather文件(需要依赖pyarrow包)提升大文件读取效率.pandas使用read_feather函数读取feather文件. ...

  5. linux 下 find 查找大文件

    #!/bin/bash #查找占用空间比较大的文件以及目录#查找占用空间比较大的目录,从根开始查找, 只显示一层, 对结果排序 du -h --max-depth=1 / | sort -nr#查找占 ...

  6. Linux复制指定目录及子目录下特定类型的文件

    方法一:通过完全复制然后删除指定类型的文件完成 Step1 使用cp命令复制所有文件 cp -r test/ test2 将测试目录test下所有内容完全复制到test2 Step2 组合使用find ...

  7. linux删除grid数据文件,MongoDB进阶系列(13)——GridFS大文件的添加、获取、查看、删除...

    GridFS是一种在MongoDB中存储大二进制文件的机制,使用GridFS的原因有以下几种: 存储巨大的文件,比如视频.高清图片等. 利用GridFS可以简化需求. GridFS会直接利用已经建立的 ...

  8. Linux、Windows都适用的跨国传输、大文件传输软件:飞驰传输

    随着"走出去"战略的实施,中国越来越多的企业走向国外,跨国企业将是大的潮流和趋势.跨国企业的分支机构遍及全球各地,员工来自多个国家,使用不同的语言.由于各地IT基础设施建设水平和使 ...

  9. Htaccess文件是什么以及Windows下自由创建.htaccess文件的N种方法

    .htaccess是什么 概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置. 通过htaccess文件,可以帮我们实现:网页301重定向.自定义404错误 ...

  10. java 写tb级文件_三管齐下!TB 级文件的上传性能瞬间被优化 100 倍!

    作者 | 中华石杉 责编 | 伍杏玲 本文经授权转载石杉的架构笔记(ID:shishan100) 这篇文章我们来看看,世界上最优秀的分布式文件系统HDFS,是如何对超大文件的上传做性能优化的? 首先, ...

最新文章

  1. linux md5sum 的用法(转)
  2. Hibernate中自动生成数据库表的两种方式
  3. Redis集群:sharding策略
  4. 软件项目管理的75条建议
  5. Mac下提示APP已损坏,打不开,请移至废纸篓
  6. 王者荣耀服务器维护5.3,王者荣耀3月2日体验服停机更新公告(5)
  7. Redis命令参考【EXPIRE】
  8. c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc
  9. 谈谈我的session跨域处理方法
  10. 系统学习NLP(十五)--seq2seq
  11. 计算机高等数学试题及答案,北大计算机系考研_历年高等数学真题附答案
  12. 使用HTML制作在线电子时钟,用HTML5制作数字时钟的教程
  13. R语言中dim函数_R语言在医学统计中的应用基础教程
  14. centos7下修改mysql8表名_CentOS7系统下修改mysql8.0版本密码
  15. 一些著名软件的开发语言概述
  16. 第十二届蓝桥杯省赛一等奖国赛一等奖经验总结
  17. 职业梦想是计算机的英语作文,梦想的职业英语作文
  18. 大数据产业链包括哪几个环节,具体包含哪些内容
  19. 选购手机时,运行内存和处理器先考虑哪个?来说说你的观点
  20. Quartz教程六--CronTrigger

热门文章

  1. 思维导图——快速记住C语言常量变量、输入输出函数
  2. 天池广东工业智造大数据创新大赛--铝型材表面瑕疵识别 --top1方案
  3. 软件实用小技巧,大大提高学习、办公效率
  4. 【每日早报】2019/12/09
  5. 微电网调度(风、光、储能、电网交互)(MatlabPython代码实现)
  6. 艾伦·凯与Smalltalk语言
  7. php退款系统设计思路,关于退款的10篇文章推荐
  8. c语言直方图最大矩形面积,利用枚举法求直方图中最大矩形面积的方法实例
  9. 使用梯子导致的浏览器不能正常使用
  10. Git 官网无法下载 解决