Smart210学习记录-------文件操作
2025-01-22 来源:jianshu
一.linux文件操作(只能在linux系统上用)
创建:
int creat(const char* filename, mode_t mode)
filename 表示要创建的文件名,mode表示对该文件的读写权限
int umask(int newmask)
调用将 umask 设置为 newmask,然后返回旧的 umask,它只影响读、写和执行权限
S_IRUSR 用户可以读
S_IWUSR 用户可以写
S_IXUSR 用户可以执行
。。。等等
除了可以通过上述宏进行“或”逻辑产生标志以外,我们也可以自己用数字来表示,Linux
用 5 个数字来表示文件的各种权限:第一位表示设置用户 ID;第二位表示设置组 ID;第三位表
示用户自己的权限位;第四位表示组的权限;最后一位表示其他人的权限。每个数字可以取 1(执
行权限)、2(写权限)、4(读权限)、0(无)或者是这些值的和。例如,要创建一个用户可读、
可写、可执行,但是组没有权限,其他人可以读、可以执行的文件,并设置用户 ID 位。那么,
我们应该使用的模式是 1(设置用户 ID)、0(不设置组 ID)、7(1+2+4,读、写、执行)、0(没
有权限)、5(1+4,读、执行)即 10 705:
打开:
int open(const char* filename, int flags)
int open(const char* filename, int flags, mode_t mode)
open()函数有两个形式,其中 pathname 是我们要打开的文件名
O_RDONLY 以只读的方式打开文件
O_WRONLY 以只写的方式打开文件
O_RDWR 以读写的方式打开文件
O_APPEND 以追加的方式打开文件
O_CREAT 创建一个文件 //使用第二种形式
O_EXEC 如果使用了 O_CREAT 而且文件已经存在,就会发生一个错误
O_NOBLOCK 以非阻塞的方式打开一个文件
O_TRUNC 如果文件已经存在,则删除文件的内容
open('test', O_CREAT, 10 705) 创建一个text文件并且打开它,对它的权限用户ID读写,组ID没权限,用户自己读写运行。。。。
如果文件打开成功,open 函数会返回一个文件描述符,以后对该文件的所有操作就可以通过
对这个文件描述符进行操作来实现。
读写;
int read(int fd, const void* buf, size_t length)
int write(int fd, const void *buf, size_t length)
返回值为实际写入的字节数
fd:open函数返回的文件描述符
buf length 顾名思义
定位:
对于随机文件,我们可以随机地指定位置读写,使用如下函数进行定位:
int lseek(int fd, offset_t offset, int whence)
fd:文件描述符
offset:相对于whence的偏移量
whence:SEEK_SET:相对文件开头
SEEK_CUR:相对文件读写指针的当前位置
SEEK_END:相对文件末尾
关闭:
int close(int fd)
当我们操作完成以后,我们要关闭文件了,只要调用 close 就可以了,其中 fd 是我们要关闭
的文件描述幅
范例:
1 #include
2 #include
3 #include
4 #include
5 #define LENGTH 100
6 main()
7 {
8 int fd, len;
9 char str[LENGTH];
10
11 fd = open('hello.txt', O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); /*
12 创建并打开文件 */
13 if (fd) {
14 write(fd, 'Hello World', strlen('Hello World')); /*
15 写入字符串 */
16 close(fd);
17 }
18
19 fd = open('hello.txt', O_RDWR);
20 len = read(fd, str, LENGTH); /* 读取文件内容 */
21 str[len] = '




