linux编程-文件操作

在Linux系统中,一切皆是文件,当我们初期学习Linux的系统编程的时候,要学会如何用代码来对文件进行操作,实现文件的创建、打开、编辑等Linux系统提供了一系列对于文件操作的API。

文件操作步骤
创建文件/打开文件 注:一定要打开文件成功后才能进行下面以下操作
读取文件/写入文件
关闭文件 注:文件读写完一定要关闭文件,要不然容易造成文件丢失

文字标识符
在Linux系统中,系统为每一个打开的文件指定一个文件标识符以便系统对文件进行跟踪,我们open一个文件,成功的话将返回这个文件的文件标识符

打开/创建文件—open函数linux编程-文件操作
open函数作用:
函数说明:获取打开文件的文件标识符
pathname:要打开的文件名(含路径)
flag:
O_RDONLY 只读打开
O_WRONLY 只写打开
O_RDWR 可读可写打开
注: 以上三个参数只能选择一个,不能多选
下列常数是可选择的:
O_CREAT 若文件不存在则创建它。使用此选项时,需要同时说明第三个参数mode,用其说明该新文件的存取许可权限。
O_EXCL 如果同时指定了OCREAT,而文件已经存在,则出错。
O_APPEND 每次写时都加到文件的尾端。
O_TRUNC 属性去打开文件时,如果这个文件中本来是有内容的,而且为只读或只写成功打开,则将其长度截短为0。

mode参数:用到O_CREAT时,才需要写入,用于记录待创建的文件的访问权限

S_IRUSR:所有者拥有的读权限

S_IWUSR:所有者拥有的写权限

S_IXUSR:所有者拥有的执行权限

S_IRGRP:群组拥有的读权限

S_IWGRP:群组拥有的写权限

S_IXGRP:群组拥有的执行权限

S_IROTH:其他用户的读权限

S_IWOTH:其他用户的写权限

S_IXOTH:其他用户的执行权限
mode也可以用加权数字来表示 ,一个变量拥有三位数字,每个数字代表一个权限,用户所获的权限是加权数字的总和,我们在文件操作中一般使用0600,代表所有者的读写权限。

成功返回打开的文件描述符;失败返回-1,可使用perror函数打印错误码。

注:想要创建新文件也可以使用creat函数
int creat(const char *filename,mode_t mode)
filename:要创建的文件名(含路径)
mode:创建模式//可读可写可执行
常见模式: 数字:4-可读、2-可写、1-可执行、7-可读、写、执行

*读取文件—read函数
linux编程-文件操作
read函数作用:从文件中读取的内容到缓冲区
参数说明:
fd:要读取文件的文字标识符
buf:缓冲区(从文件中读取的内容)
count:所读取内容的大小
成功返回在缓冲区读取的字符个数;错误返回-1

写入文件—write函数
linux编程-文件操作
write函数作用:将缓冲区的内容写入文件中
函数参数说明:
fd:要读取文件的文字标识符
buf:缓冲区(从文件中写入的内容)
count:所写入内容的大小
成功返回写入文件的字符个数;错误返回-1

关闭文件—close函数
close函数作用:关闭对应的文件描述符
fd:要关闭的文件描述符
linux编程-文件操作
光标定位—lseek函数
linux编程-文件操作

lseek函数作用:在文件写入的时候,有时候需要对光标进行定位,这时可以用lseek函数
函数参数说明:
fd:文件标识符
offset:偏移量 (offset为负值表示往前偏移,正值则表示往后偏移)
whence:光标位置(SEEK_SET(开头、SEEK_CUR(当前位置),SEEK_END(结尾))
成功返回从文件开头开始以字节为单位测量的结果偏移位置;错误返回-1。