当前位置: 首页 > news >正文

缓冲文件系统和非缓冲文件系统

1.缓冲文件系统

缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存“缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器 而定。

fopen, fclose, fread,fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind

2.非缓冲文件系统

缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据。非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度快,由于ANSI标准不再包括非缓冲文件系统,因此建议大家最好不要选择它。本书只作简单介绍。open, close, read, write, getc,getchar, putc, putchar 等

openfopen区别:

前者属于低级IO,后者是高级IO。

前者返回一个文件描述符,后者返回一个文件指针。

前者无缓冲,后者有缓冲。

前者与 read,write 等配合使用, 后者与 fread, fwrite等配合使用。

后者是在前者的基础上扩充而来的,在大多数情况下,用后者。

open是系统调用,fopen是标准C语言库

 


相关文章:

  • 利用线程读取文件(带有进度条)
  • 类和对象
  • 什么是内联函数
  • 构造函数
  • 析构函数
  • new和malloc
  • static和const
  • 友元函数
  • 函数模板定义
  • 类模板定义+用类模板写一个入栈出栈的程序
  • 模板的全特化与偏特化
  • cout
  • cin
  • C++文件输入输出流+输入输出二进制文件(自定义对象)
  • 多态定义
  • (三)从jvm层面了解线程的启动和停止
  • 「面试题」如何实现一个圣杯布局?
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Cookie 在前端中的实践
  • jQuery(一)
  • mysql 5.6 原生Online DDL解析
  • PHP CLI应用的调试原理
  • Promise面试题,控制异步流程
  • python3 使用 asyncio 代替线程
  • Python学习笔记 字符串拼接
  • Spring声明式事务管理之一:五大属性分析
  • 对象引论
  • 关于List、List?、ListObject的区别
  • 排序算法学习笔记
  • 日剧·日综资源集合(建议收藏)
  • 删除表内多余的重复数据
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 用jquery写贪吃蛇
  • 责任链模式的两种实现
  • 智能合约开发环境搭建及Hello World合约
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 选择阿里云数据库HBase版十大理由
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #14vue3生成表单并跳转到外部地址的方式
  • #162 (Div. 2)
  • #pragma multi_compile #pragma shader_feature
  • #在 README.md 中生成项目目录结构
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .net wcf memory gates checking failed
  • .NET6 命令行启动及发布单个Exe文件
  • .NET6实现破解Modbus poll点表配置文件
  • .NET正则基础之——正则委托
  • .ui文件相关
  • @javax.ws.rs Webservice注解
  • []串口通信 零星笔记