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 |