fopen vs open
2013-10-31 11:23
239 查看
要想弄明白fopen 和 open的区别,首先要弄清楚缓冲IO和非缓冲IO的区别;
缓冲IO vs 非缓冲IO
缓冲IO:
在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器 而定。缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数
据。
fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等
非缓冲IO:
非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度 快,由于ANSI标准不再包括非缓冲文件系统,因此建议大家最好不要选择它。
fopen vs open
1. fopen 是缓冲IO, open 是非缓冲IO, 很多情况下fopen 要比 open快(不清楚,需要验证,如何验证?)
2. 如果文件不是以二进制模式(binary mode)打开,fopen自动处理行结束转换,这对移植到非 unix 环境有帮助。‘
3. FILE* 文件结构指针,在其上可以使用fscanf 和其他 ASCI C 标准IO。
3. ASCI C已经不再包含非缓冲IO, 所以为了移植性可见,可以使用fopen。
4. 使用fopen处理文件时,一定要时刻记住fflush 和 fclose。
缓冲IO vs 非缓冲IO
缓冲IO:
在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器 而定。缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数
据。
fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等
非缓冲IO:
非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度 快,由于ANSI标准不再包括非缓冲文件系统,因此建议大家最好不要选择它。
fopen vs open
1. fopen 是缓冲IO, open 是非缓冲IO, 很多情况下fopen 要比 open快(不清楚,需要验证,如何验证?)
2. 如果文件不是以二进制模式(binary mode)打开,fopen自动处理行结束转换,这对移植到非 unix 环境有帮助。‘
3. FILE* 文件结构指针,在其上可以使用fscanf 和其他 ASCI C 标准IO。
3. ASCI C已经不再包含非缓冲IO, 所以为了移植性可见,可以使用fopen。
4. 使用fopen处理文件时,一定要时刻记住fflush 和 fclose。
相关文章推荐
- linux下ifcfg-ethx的配置
- 学习JAVA应该去的20个英文网站(java学习网站)
- tomcat中jsp引用图片不能包含中文路径
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
- linux 下的文本处理——除去重复行uniq命令
- Google的网站性能优化最佳实践
- 使用 Scalable Performance Monitor 监控 和分析 solr的运行状况
- Expert Shell Scripting
- 对hadoop版本YARN的一点理解
- OpenCV Learning: 图像像素Mat操作方法2
- Magnific Popup文档翻译(1)
- linux 压缩 解压缩命令使用
- UBIFS介绍 - MTD网站
- log4j.properties的配置
- DB2监控
- Ubuntu 12.04 apache2 源码安装
- Linux添加虚拟内存解决swap空间不足问题
- linux如何看物理内存的使用率
- bash 深入理解:交互式shell和非交互式shell、登录shell和非登录shell的区别
- Linux文件描述符和文件指针