目录
什么是文件
文件(file)是计算机中存储数据的一种方式。文件可以是文本文件、图像文件、音频文件、视频文件等不同类型的数据。
在计算机中,文件通常是以二进制数据的形式存储在磁盘或其他存储介质上的。每个文件都有一个文件名,用于在系统中标识和访问这个文件。文件名一般包含文件的实际名称和后缀名,后缀名用于指定文件的类型。
通过程序,我们可以对文件进行读取、写入、追加等操作。同时,也可以进行文件的创建、删除、移动等管理操作。在操作系统中,文件是操作系统的基本组成单位之一,各种应用程序都会涉及到文件的读写和管理操作。
文件的打开和关闭
文件的打开我们使用fopen函数,其原型为:
文件的关闭我们用fclose函数,其原型为:
fopen()函数打开由fname(文件名)指定的文件, 并返回一个关联该文件的流.如果发生错误, fopen()返回NULL. mode(方式)是用于决定文件的用途(例如 用于输入,输出,等等)
Mode(方式) | 意义 |
"r" | 打开一个用于读取的文本文件 |
"w" | 创建一个用于写入的文本文件 |
"a" | 附加到一个文本文件 |
"rb" | 打开一个用于读取的二进制文件 |
"wb" | 创建一个用于写入的二进制文件 |
"ab" | 附加到一个二进制文件 |
"r+" | 打开一个用于读/写的文本文件 |
"w+" | 创建一个用于读/写的文本文件 |
"a+" | 打开一个用于读/写的文本文件 |
"rb+" | 打开一个用于读/写的二进制文件 |
"wb+" | 创建一个用于读/写的二进制文件 |
"ab+" | 打开一个用于读/写的二进制文件 |
为了更好的理解我们举个例子:
#include <stdio.h>
int main() {
FILE *fp;
char ch;
// 打开文件
fp = fopen("test.txt", "r"); // 以只读方式打开文件
if (fp == NULL) {
printf("Cannot open file.\n");
return 1;
}
// 读取文件
while ((ch = fgetc(fp)) != EOF) {
printf("%c", ch); // 输出文件内容
}
// 关闭文件
fclose(fp);
return 0;
}
在这个例子中,我们首先使用fopen函数打开名为test.txt的文件,并指定以只读方式打开。
接着,我们使用fgetc函数逐个读取文件的字符,并输出到屏幕上。
最后,用fclose函数来关闭文件。
需要注意的是,文件的读写操作如果出错,我们需要适时地处理错误信息,比如在打开文件失败时输出一条错误信息并退出程序。
文件缓存区
文件缓冲区是C语言中文件操作中一个重要的概念。当你使用fopen函数打开一个文件时,操作系统会为这个文件分配一段缓冲区,在后续的文件读写操作中,数据就存储在这个缓冲区中,而不是直接写入磁盘。
文件缓冲区的存在,在一定程度上提高了文件读写的效率,因为缓冲区可以先将数据暂存下来,进行一次性地读写操作,减少了频繁地向磁盘写入数据的次数。此外,缓冲区还可以对数据进行排序、过滤、加密等操作。
在使用文件操作函数进行读写时,我们可以使用fflush函数来强制将缓冲区中的数据写入磁盘。
需要注意的是,在程序结束前,应该使用fclose函数来关闭文件,这样才能保证缓冲区中的所有数据都被写入磁盘,避免数据丢失或损坏。