文件IO基础
2.1 什么是文件IO
数据流方向定义:文件IO是对文件的输入、输出操作,通俗点说就是对文件的读/写操作
主要涉及4个函数:open()、read()、write()、close()
简单流程:打开文件、读或写文件、关闭文件
2.2 文件描述符
定义:非负整数、文件句柄、与对应的文件相绑定
描述符分配原则:分配一个没有被使用的最小非负整数作为文件描述符
标准输入:0 标准输出:1 标准错误:2
2.3 open()函数
-
作用:打开文件、创建文件
-
函数原型:
pathname:文件路径、flags:标志、mode:设置权限,创建文件时才需要第三个参数
-
flags 参数介绍:
O_RDONLY: 只读方式打开文件
O_WRONLY: 只写方式打开文件
O_RDWR: 以可读可写方式打开文件
O_CREAT: 使用此标志或者O_TMPFILE时,第三参数需要传入来指定文件的访问权限
O_DIRECTORY: open指向的不是一个目录则调用失败
O_EXCL: 用于专门创建文件,O_CREAT| O_EXCL,如果指向的文件已经存在那么会返回错误,用于测试文件是否存在
O_NOFOLLOW:如果pathname指向的是一个符号链接,将不对其进行解引用,直接返回错误 -
mode:参数介绍
O:其他用户权限
G:同组用户权限
U:文件所属用户的权限
S:文件的特殊权限111 000 000 :表示文件所属用户具有读写执行的权限,其他用户和同组用户没有任何权限
100 100 100 :表示文件所属用户、其他用户、同组用户都只有可读权限宏定义:
2.4 write()函数
-
作用:写文件
-
函数原型
fd : 目标文件 buf: 存放要写入的数据 count:写入的字节数 ssize_t 通过typedef重命名longlong
返回值:写入的字节数,如果写入错误则返回-1
2.5 read()函数
-
作用:读文件
-
函数原型
fd : 目标文件 buf:存放读取到的字节数 count: 读取的字节数
返回值:正确读取分两种情况,第一种指的是要求读取100字节,也成功读取100字节,那么返回值就是100;如果要求读取100而由于读指针到末尾只有30字节,则返回值是30,下一次调用read返回值是0;读取错误,返回值是-1;
2.6 close()函数
-
作用:关闭文件
-
函数原型
-
成功返回 0 失败返回 -1
2.7 lseek函数
-
作用:调整读写位置偏移
-
函数原型:
fd:问价句柄 offset:偏移量 whence:参考值(文件头部、尾部、当前指针位置)
SEEK_SET 头、SEEK_CUR ptr、SEEK_END 尾
返回值:成功情况下返回修改后位置到头部的偏移量,失败返回-1