2.【文件IO】【2-3天】

1. 概念

系统中(posix)定义的一组用于输入输出的函数接口,属于低级IO。

2. 特点

1. 没有缓冲机制,每次调用都 会引起系统调用

2. 围绕 文件描述符 进行操作,文件描述符是非负整数,依次分配

3. 文件IO默认打开 三个文件描述符:0(标准输入),1(标准输 出),2(标准错误)

4. 可以操作除目录文件外任意类型文件

3. 函数

open close read write lseek

1. 打开文件 open

int open(const char *pathname, int flags);
功能:打开文件
参数:pathname:文件路径名
      flags:打开文件的方式
            O_RDONLY:只读
            O_WRONLY:只写
            O_RDWR:可读可写
            O_CREAT:创建
            O_TRUNC:清空
            O_APPEND:追加   
返回值:成功:文件描述符
        失败:-1
	当第二个参数中有O_CREAT选项时,需要给open函数传递第三个参数,指定 创建文件的权限(这并非 实际创建后的 文件权限,而需要下面操作)
	创建出来的文件的实际权限为:指定权限值 & (~umask)  //umask为文件权限掩码 

1.1. 创建文件的关系 · 文件IO和标准IO

标准IO

文件IO

r

只读O_RDONLY

r+

可读可写,文件不存在报错O_RDWR

w

只写O_WRONLY|O_CREAT|O_TRUNC, 0666

w+

可读可写,文件不存在创建,存在清空O_RDWR|O_CREAT|O_TRUNC, 0666

a

只写,不存在创建、存在追加

O_WRONLY|O_CREAT|O_APPEND, 0666

a+

可读可写,不存在创建、存在追加

O_RDWR|O_CREAT|O_APPEND, 0666

2. 关闭文件 fclose

int close(int fd);
功能:关闭文件
参数:fd:文件描述符

3. 读操作 read

ssize_t read(int fd, void *buf, size_t count);
功能:从一个已打开的可读文件中读取 指定个 字节的数据
参数:fd      文件描述符
      buf    存放位置
      count  期望的 字节 个数
返回值:
	成功:实际读到的个数
    返回-1:表示出错,并设置errno号
    返回0:表示读到文件结尾	

4. 写操作 write

ssize_t write(int fd, const void *buf, size_t count);
功能:向指定文件描述符中,写入 count个 字节 的数据。
参数: 
	  fd     文件描述符
      buf    要写的内容
      count  期望值
返回值:
	成功:实际写入数据的个数
    失败: -1

5. 定位操作 lseek

off_t lseek(int fd, off_t offset, int whence);
功能:设定文件的偏移位置	
参数:
	fd:文件描述符
	offset:偏移量  				
		正数:向文件结尾位置移动
		负数:向文件开始位置
	whence:相对位置
		SEEK_SET   开始位置
		SEEK_CUR   当前位置
		SEEK_END   结尾位置
返回值:
	成功:文件的当前位置
	失败:-1
// lseek 定位到EOF位置,即最大下标+1,即有效字符个数
off_t len = lseek(src, 0, SEEK_END);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值