1、先来了解一下模式字符串的各个含义
r / rb:只读模式。文件必须存在。
w / wb:只写模式。文件存在则清空,不存在则创建。
a / ab:追加模式。文件存在则在末尾追加,不存在则创建。
r+ / rb+ / r+b:读写模式。文件必须存在。
w+ / wb+ / w+b:读写模式。文件存在则清空,不存在则创建。
a+ / ab+ / a+b:读写追加模式。文件存在则在末尾追加,不存在则创建。
b代表二进制模式 a代表追加 +代表读写
2、再来了解一下读写常量的各个含义
O_RDONLY:以只读方式打开文件。
O_WRONLY:以只写方式打开文件。
O_RDWR:以读写方式打开文件。
O_CREAT:在文件打开过程中创建新文件
O_APPEND:在文件末尾追加数据,而不是覆盖现有内容。
O_TRUNC:如果文件已经存在,将其截断为空文件。
O_EXCL:与 O_CREAT 一起使用时,如果文件已经存在,则 open() 调用将失败。
O_SYNC:使文件写操作变为同步写入,即将数据立即写入磁盘。
O_NONBLOCK:以非阻塞方式打开文件,即使无法立即进行读写操作也不会被阻塞。
前三个方式互斥,但可以与后面的进行或运算
3、最后将前两个相联系起来
| 模式字符串 | 含义 | 读写常量 |
|---|---|---|
| r | 只读 | O_RDONLY |
| w | 只写 文件不存在则创建一个新文件; 存在则将长度截断为零; | O_WRONLY |O_CREAT | O_TRUNC |
| a | 追加写 文件不存在则创建一个新文件; 存在则在末尾追加; | O_WRONLY |O_CREAT |O_APPEND |
| r+ | 读写,文件必须存在 | O_RDWR |
| w+ | 读写 文件不存在则创建一个新文件; 存在则将长度截断为零; | O_RDWR | O_CREAT | O_TRUNC |
| a+ | 读写追加, 文件不存在则创建 存在则在末尾追加 | O_RDWR |O_CREAT |O_APPEND |
1950

被折叠的 条评论
为什么被折叠?



