进击吧,linux(七) 文件操作学习
0赞
Linux里面,对文件的操作是很有必要的,因此要先学习对文件的一些操作。总体来说,文件的操作,有以下几个:
1、 打开文件
2、 创建文件
3、 读文件内容
4、 写文件内容
5、 重定位文件指针
6、 关闭文件
这些知识,可以通过《unix高级环境编程》这本书中获知。
然后就通过linux的man命令,去查看每个函数的使用。如open。使用man open后。就出现以下信息了。
对于每一个函数的学习,可以使用如下模板来对函数归纳学习。这个模板是国嵌提供的。
下面就按照这个模板来对文件操作的各个函数进行学习。
一、打开文件
使用的是open。linux中使用man open。就可以得到这个函数的相关信息了。将信息归纳到模板中。
2.1.1 函数名
open
2.1.2 函数原形
int open(const char *pathname, int flags)
int open(const char *pathname, int flags, mode_t mode)
2.1.3 函数功能
打开或者创建文件
2.1.4 所属头文件
<sys/types.h> <sys/stat.h> <fcntl.h>
2.1.5 返回值
成功:整数(文件描述符),
失败:-1 表示打开或者创建失败
2.1.6 参数说明
pathname:要打开或者创建的文件的名字(含路径)
flags:文件打开的标志
-O_RDONLY(只读) O_WRONLY(只写) O_RDWR(可读可写) 这三个是必须的,以下是可以选择的
-O_CREAT(打开文件不存在则创建)
-O_APPEND(以追加方式打开文件)
mode: 在flags为O_CREAT时,才使用这个参数,否则不是用这个参数。表示待创建文件的权限。
-S_IRWXU(00700) : 用户有读写执行权限
-S_IRUSR(00400) :用户有读权限
-S_IWUSR(00200) :用户有写权限
-S_IXUST(00100) : 用户有执行权限
-S_IRWXG(00070) :组有读写执行权限
-S_IRGRP(00040) : 组有读权限
待续
2.1.7 示例代码
二、创建文件
2.2.1 函数名
creat
2.2.2 函数原形
int creat(const char * pathname, mode_t mode)
2.2.3 函数功能
创建文件,并以只写的方式打开该文件
2.2.4 所属头文件
<sys/types.h> <sys/stat.h> <fcntl.h>
2.2.5 返回值
成功: 整数(文件描述符)
不成功: -1(表示创建文件失败)
2.2.6 参数说明
pathname:要创建的文件的名字(含路径)
mode:创建的文件的权限
2.2.7 示例代码
创建函数,要使用mode参数,这个参数是定义文件的访问权限的。和linux中更改权限的数字格式是一样的,只不过数字前面要加个0。
三、关闭文件
2.3.1 函数名
close
2.3.2 函数原形
int close(int fd)
2.3.3 函数功能
关闭一个文件描述符
2.3.4 所属头文件
<unistd.h>
2.3.5 返回值
成功: 0
失败: -1
2.3.6 参数说明
fd : 文件描述符
2.3.7 示例代码
四、读文件
使用read函数,不过注意,在man的时候,要man 2 read。因为man查找命令的时候,是有顺序的,首先是系统的命令,然后是系统调用函数,最后是库函数。Man 2就是指定在系统调用函数中查找。
2.4.1 函数名
read
2.4.2 函数原形
ssize_t read(int fd, void *buf, size_t count)
2.4.3 函数功能
从一个打开的文件中读取数据
2.4.4 所属头文件
<unistd.h>
2.4.5 返回值
成功: 读取的字节数
失败: -1
2.4.6 参数说明
Fd: 读取文件的文件描述符
Buf: 读取来的数据存到的buf空间
Count :希望读取的数据个数
2.4.7 示例代码
五、写文件
使用write函数,不过也是要用man 2 write。
2.5.1 函数名
write
2.5.2 函数原形
ssize_t write(int fd, const void *buf, size_t count)
2.5.3 函数功能
向指定的文件中写入count个字符数据
2.5.4 所属头文件
<unistd.h>
2.5.5 返回值
成功:写入的数据个数
失败:-1
2.5.6 参数说明
fd: 要写入数据的文件描述符
buf: 要写入文件的数据的位置
Count: 希望写入数据的个数
2.5.7 示例代码
六、重定位文件指针
2.6.1 函数名
lseek
2.6.2 函数原形
off_t lseek(int fd, off_t offset, int whence)
2.6.3 函数功能
重新定位文件的读写位置
2.6.4 所属头文件
<sys/types.h> <unistd.h>
2.6.5 返回值
成功:移动后的文件指针距离文件头的位置(以字节为单位)
失败:-1
2.6.6 参数说明
fd: 文件描述符
offset:从whence设置的地方开始移动,正数往后移,负数往前移
whence:
-SEEK_SET: 从文件开头开始移动
-SEEK_CUR:从当前位置开始移动
-SEEK_END:从文件末尾开始移动
2.6.7 示例代码
这样一归纳下来的话,基本上文件的操作就搞定了。最好每一个函数的学习,都写一个示例代码去测试一下这个函数。