IO文件分类和缓冲区(IO文件一)

4 篇文章 0 订阅
3 篇文章 0 订阅

一.文件的分类

1.概念

文件存在硬盘上,整个系统是一个文件系统。

在Linux中,很多的操作都是通过文件来实现。

Linux中一切皆文件

在这里插入图片描述

2.分类

Linux中一共有7种文件类型

(1)普通文件(-)

用于存储文件数据

(2)目录(d)

放子文件和子文件夹,用来形成整个文件系统的层次结构

(3)链接文件(l)

指的是软链接

(4)字符设备文件(C)

代表一个字符设备,通过访问字符设备文件来访问字符设备

(5)块设备文件(b)

代表一个块设备,通过访问块设备文件来访问块设备

(6)管道文件(p)

用于进程间管道通信

(7)套接字文件(s)

用于网络中本地通信

3.文件IO的层次关系

在这里插入图片描述

4.文件缓冲区

由于系统调用消耗时间相对较长,所以我们会设计缓冲区将多个文件操作合并,最后一起通过系统调用来实现。

通过缓冲区调用系统调用的时机可以将文件缓冲分为三类:

①无缓冲:没有缓冲区

②行缓冲:遇到换行符刷新缓冲区

③全缓冲:当缓冲区满了刷新缓冲区

标准IO默认使用行缓冲,文件IO无缓冲,标准输出(printf)使用行缓冲,标准错误输出无缓冲

printf会刷新缓冲区的条件:

①遇到'\n'

②程序正常结束

③使用fflush强制刷新

④缓冲区满了

文件缓冲的修改 -------- setbuf/setvbuf

#include <stdio.h>
void setbuf(FILE *stream,char *buf);
//等价于setvbuff(stream,buf,buf ? _IOFBF : _IONBF,BUFSIZ);

int setvbuf(FILE *stream,char *buf,int mode,size_t size);
参数:

    stream:代表一个文件

    buf:指向缓冲区

    mode:使用哪种缓冲(三选一)
				_IONBF unbuffered(无缓冲)
			    _IOLBF line buffered(行缓冲)        
				_IOFBF fully buffered(全缓冲)
    size:缓冲区大小

缓冲区如果太小效率很低;很大浪费空间,容易造成数据丢失;缓冲区一般设为 512bytes —— 4Kbytes之间

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java.L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值