文件可以长久保存数据,即使电脑关机或重启数据也不会丢失,通过文件可以方便地进行数据备份和恢复,以防数据丢失,且文件系统提供了一种组织数据的结构,使得数据检索和管理更加高效。那么,什么是文件呢?
文件是电子设备中用于存储数据的一种基本单位。它可以包含文本、图片、音频、视频或其他类型的数据。文件存储在存储介质如硬盘、SSD或者云存储上,通常有一个文件名和扩展名,这些帮助用户和系统识别文件的内容和用途。文件可以被创建、编辑、删除和移动,是数据管理和组织的重要工具。
在程序设计中,我们一般谈的文件有两种:程序文件,数据文件
程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)其用途是用来安装和运行软件应用程序。
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。用途是存储数据以便永久保存或提供给程序使用。
扩展名:
程序文件的主要目的是指导计算机如何执行特定的任务,而数据文件主要用于存储由用户或程序在执行任务期间生成或使用的数据。在软件开发中,源代码文件通常也被视作程序文件,因为它们包含构成最终可执行程序的指令代码。
⼀个文件要有⼀个唯⼀的文件标识,以便用户识别和引用。
文件名包含3部分:文件路径+文件名主干+文件后缀
C:\Users\Username\Documents\report.docx
其中C:\Users\Username\Documents\是文件的路径.,主干是用户通常使用这部分来给文件命名,以表明文件的内容或用途,即report,文件后缀即为**.docx**。
一个绝对路径从文件系统的根目录( C:\ 在 Windows) 开始,包含了从根目录到目标文件或目录的完整序列。
C:\Users\Username\Documents\report.docx
一个相对路径是基于当前工作目录的路径。它不从根目录开始,但提供了从当前目录到目标文件或目录的路径信息
如果当前工作目录是C:\Users\Username\Documents\report.docx则到达 Documents 目录中的 report.docx 的相对路径可以是:
Documents\report.docx
在文件路径中还有一些特殊符号,常见的有:
二进制文件和文本文件是两种基本的文件类型,它们的主要差别在于存储内容的格式和用途:
主要区别:
数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。
如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。
数据在字符中的存储,字符一律以ASCII形式存储,数值型数据既可以用ASCII形式,也可以用二进制形式存储
例如整数10000,以ASCII形式输出到硬盘,占五个字节(每一位一个),若以二进制形式输出,则占四个字节.
测试代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int a = 10000;
FILE* pf = fopen("test1.txt", "wb");
fwrite(&a, 4, 1, pf);//二进制的形式写到文件中
fclose(pf);
pf = NULL;
return 0;
}
10000以二进制形式写入文件中,生成txt文件
用记事本打开
用vs以二进制编辑器打开
我们会发现,这串数字即为10000十六进制的小端存储
流用来表示数据的一种流动序列。程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输入输出操作各不相同,为了方便程序员对各种设备进行方便的操作,我们抽象出了流的概念
流的种类
流的操作
通俗易懂的讲 流在计算机里,就像是一条河流,数据就像是河里的水。想象一下,河水从一个地方(数据源)流向另一个地方(目的地)。这个过程就很像计算机中数据从一个点流向另一个点的情形。
举个例子:
读取文件:当你打开一个文本文件,数据(文字)从文件(数据源)流到计算机程序(目的地),就像水从水库流向你家的水龙头。
保存文件:当你写东西保存到电脑,文字从程序(数据源)流向文件(目的地),这就像你用水管将水流入水池。
听音乐:想象音乐播放器在播放歌曲。音乐数据从文件(数据源)流到音乐播放器(目的地),然后变成你能听到的声音。
在计算机中,“流” 让我们不用担心数据是从哪里来的,要去哪里。我们只需要关注于数据流动的这个过程,就像你只需打开水龙头,不用关心水是怎么来的一样。这样,无论数据是来自网络、文件还是其他什么地方,处理起来都是一样的。
在计算机中,特别是在命令行接口中,"标准流"是程序进行输入和输出操作的常见方式。这些标准流为程序提供了一个基本的接口来和外界交流数据。标准流通常有三个:
这些流在正常情况下连接到你的终端或命令行界面:
标准流让程序和用户之间的交流变得简单直观。正如你不需要知道电话线路如何工作就能打电话一样,程序员和用户也不需要操心数据在计算机内部是如何传输的,标准流会帮你处理这些。
stdin、stdout、stderr 三个流的类型是: FILE* ,通常称为文件指针。
C语言中,就是通过 FILE* 的文件指针来维护流的各种操作的。
文件指针是在进行文件操作时用于追踪当前读取或写入位置的一个工具。它是文件处理中一个重要的概念,特别是在需要对文件内容进行随机访问时。简单来说,文件指针就像是你在书本上放的书签,标记着你当前阅读到哪一页。
每个被使用的文件都在内存中开辟了⼀个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统声明的,取名FILE.
每当打开⼀个文件的时候,系统会根据文件的情况自动创建⼀个FILE结构的变量,并填充其中的信息,使用者不必关心细节。
一般都是通过⼀个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便。
FILE *fp
定义pf是⼀个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是⼀个结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够间接找到与它关联的文件。
假设你正在使用一个文本编辑器查看一个文本文件。当你向下滚动页面时,文件指针也在移动,指向你当前视图的开始位置。如果你选择跳转到文件的中间,文件指针会相应地移动到文件的中间部分。
在编写程序的时候,在打开文件的同时,都会返回⼀个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。
ANSIC 规定使用 fopen 函数来打开文件, fclose 来关闭文件。
fopen 是 C 语言中用于打开文件的标准库函数。它的功能是打开一个文件,并返回一个指向 FILE 结构体的指针,该结构体包含了所有用于文件操作的必要信息。如果文件打开失败,fopen 会返回 NULL。
FILE *fopen(const char *filename, const char *mode);
fclose 是 C 语言中的一个标准库函数,用于关闭已经打开的文件,它可以帮助防止数据丢失和文件损坏。
int fclose(FILE *stream);
mode表示文件的打开模式,下面有多种类型:
示例:
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
// 错误处理,例如打印错误信息
perror("Error opening file");
} else {
// 文件操作
// ...
fclose(file); // 最后不要忘记关闭文件
}
本篇文章到此结束,后续会为大家更新剩余内容,感谢观看!!!