1.文件
1.1文件的定义
文件是什么?我们来看下面这段定义:
文件是操作系统中的一个重要概念。文件是以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序,等等。
简单来说,文件是用来存储信息的,其存在的目的是为了实现数据持久化。
在程序设计中,文件通常分为两种:程序文件和数据文件。
- 程序文件:程序文件又被称为可执行文件或代码文件,是包含计算机程序代码的文件。它们通常包含一系列指令和命令,告诉计算机如何执行特定的任务。程序文件在计算机上运行时,会被解释和执行,从而实现特定的功能.
- 数据文件:数据文件是存储数据信息的文件,它们包含特定领域的数据,例如文本文件、图像文件、视频文件和音频文件等。数据文件中的数据可以被程序文件读取和操作.
1.2文件名
文件名的构成:文件路径+文件名主干+文件后缀
- 文件路径:文件路径是指从盘符到该文件所经历的路径中各符号的集合
- 文件名主干:即文件标识,也就是我们常说的文件名
- 文件后缀:文件后缀决定了文件的默认打开方式,如 txt 表示文本文件,jpg表示图像文件等,当然文件后缀在文件名中并不是必需的,可以缺失。
举一个例子:
c:\code\test.txt 意思是c盘根目录code文件夹下,文件名主干为test,文件后缀为 txt 的文件.
2.文件操作
对于文件而言,操作通常分为三步:打开文件、操作文件以及关闭文件。
以下,我们将从这三个方面来详细了解文件操作。
2.1打开文件
在C语言中,打开文件我们使用fopen函数。
- FILE*: fopen函数的返回值类型是一个FILE* 类型的指针。fopen打开相应文件时,会在内存中创建一个与此文件对应的文件信息区,这个文件信息区实质上就是一个FILE类型的结构体。返回一个FILE* 类型的指针,实质上就是通过维护内存中的文件信息区,进而达到维护硬盘上数据文件的目的。
- filename:这个参数就是指文件名。此处的文件名有绝对路径和相对路径之分。绝对路径就是最完整的文件名,所以使用绝对文件的绝对路径绝对能找到相应文件;而相对路径特别用于源文件所在目录下的其它数据文件,也就是说相对路径是只在源文件所在目录下查找相应文件的,限定了查找范围 。
- mode:mode意即”格式“,是用来表明对该文件进行怎样的操作,以下列出一些常用的mode。
当然,除此之外,还有两个用得比较多,以二进制的形式读rb 和以二进制的形式写wb
以下代码是打开文件的一个示例:
2.2操作文件
操作文件有很多函数,这些函数大致可分为两类:
- 从数据文件中读取数据的函数,即数据从硬盘文件到内存:fgetc\fgets\fscanf\fread。其中前三者均适用于所有输入流,而最后一个fread只适用于从文件中读取数据,且是特指以二进制的形式读。
- 向数据文件中写入数据的函数,即数据从内存到硬盘文件:fputc\fputs\fprintf\fwrite。其中前三者均适用于所有输出流,而最后fwrite只适用于向文件中写入数据,且是特指以二进制的形式写。
以上这些函数在此不过多赘述,只在此说明一点,对于一个文件,不能在读取的同时,又进行写入操作,这是无法实现的,必须分别进行:
2.2.1文件读取检验
在文件读取中,文件读取结束并不一定意味着读取正常,遇到文件末尾会读取结束,文件读取出错也会结束,所以我们该如何判断一个文件读取结束时,究竟是哪种情况呢?
我们可以适用ferror和feof这两个函数来进行鉴别,其中ferror用来判断文件读取是否因读取出错而结束,feof用来判断文件读取是否因遇到文件末尾而结束。
以下是函数使用示例:
2.3关闭文件
关闭文件较为简单,使用到fclose函数,参数即为相应的FILE*类型的指针变量。
上述代码中已有示例,此处不再赘述。