文章目录
一、何为文件的读、写?
读文件,是指将文件内容拷贝到缓冲里;写文件,是指把缓冲里的内容写进文件里。
二、相关的标准库头文件
C:stdio.h。
C++:fstream、ifstream、ofstream。
三、打开文件
C:
// 声明
FILE* fopen(const char* filename, const char* mode);
// 使用
FILE* file = fopen("abc.md", "r");
模式名称 | 读写权限 | 是否要求文件本来就存在 |
---|---|---|
r | 只读不写 | 是 |
w | 只写不读 | 否,若不存在则自动创建空文件;写操作会从文件头部写入数据 |
a | 只写不读 | 否,若不存在则自动创建空文件;写操作会从文件尾部写入数据 |
r+ | 可读可写 | 是 |
w+ | 可读可写 | 不要求,若不存在则自动创建空文件;写操作会从文件头部写入数据 |
a+ | 可读可写 | 不要求,若不存在则自动创建空文件;写操作会从文件尾部写入数据 |
以上 6 个模式皆以文本文件的形式打开文件,若想以二进制文件的形式打开文件,则要在上述模式中添加“b”:rb、wb、ab、rb+(或 r+b)、wb+(或 w+b)、ab+(或 a+b)。
C++:
// 声明
explicit fstream(const char* filename,
ios_base::openmode mode = ios_base::in | ios_base::out);
// 使用
std::fstream file("abc.md", std::fstream::in | std::fstream::out);
模式名称 | 描述 |
---|---|
in(input) | 拥有读权限,作为输入流,类似 cin |
out(output) | 拥有写权限,作为输出流,类似 cout |
binary | 只有该模式能以二进制形式打开文件 |
ate(at end) | 打开文件后定位到文件末尾 |
app(append) | 从文件尾部开始写入 |
trunc(truncate) | 忽视文件原有内容,即把文件长度设置为 0 |