00:01
我们对文件的读写再做一些说明哈,那么了解了C语言处理的标准输入和输出设备过后呢,我们下面就来看一下,对文件而言,怎么去创建一个文件,打开关闭文本文件或者是二进文件,当然也包括怎么向文件里面写内容,对不对?那么一个文件不管它是二进制的还是文本文件呢,它其实都是一系列的字节,也就是说我们的文件呢,都是由一个字节一个字节组成的。C语言呢,不仅提供了顶层的函数。也提供了底层的调用。底层就是OS这个级别的调用,来处理设备,存储设备上的文件,本章我们将去讲解文件管理,那这里呢,首先要给大家看几个非常重要的函数,我们来聊一聊第一个函数就是这个f open。听这个,听这个名字,大家应该知道这个函数是干什么的,它就是用用来创建一个新的文件,或者是打开一个已有的文件,也就是说这个f open呢有两个作用,第一个它可以创建新的文件。
01:08
或者打开一个已有的文件,那到底是创建一个新文件还是打开一个已经有的文件呢?要取决于这个文件是否已经存在,如果这个文件已经存在了,那就是打开,如果这个文件没有打开。呃,就这个文件。呃,还没有存在,那就是创创建。明白吧,也就是说这个函数,嗯,他会判断你这个文件有没有,如果文件没有,它就创建,如果有它就打开。那么这个呢,它会调用,这个调用会初始,会初始化类型file的一个对象,会拿到一个file对象,也就是说它会返回一个文件指针,这个file呢,包含了所有用来控制流必要的信息,下面是一个函数的调用原型,这样子,那这个函数怎么调用呢?你看它返回这是个file,这个file就是一个我们说的文件指针啊文件指针,那这里面呢,嗯,就是这个constant新file name,这个是第一个参数,就是我们文件的名称,是一个字符串。
02:09
是一个字串,那么cost这个呢,是代表我们一个打开的模式,认真听哈,这边是一个打开的模式,在这里我也说了,File name是一个字串,用来命名文件访问模式呢,这个mode可以下面这几个字。比如是r wa加,W加或者A加,那么不同的模式呢,含义会有些不一样,认真听哈,如果是以R形式打开,也就是说我在这后面打开的时候呢,我传的是这样一个东西,R。那么R的模式呢?是打开一个已有的文本文件,并允许读取,只能读,R呢?是打开一个文本文件,允许写入文件,如果这个文件不存在,就会创建。明白哈,就是如果你是以W的形式打开,那其实呢,就是如果文件不存在,它会创建新文件。
03:02
在这里,您的文件会从文件头开始写入,如果文件已经存在了,该文件会被截断为零。这个太重要了,我再重新写一下。这种打开方式非常恐怖啊,一定要认真小心一点,就说这个你你以W方式打开呢,这个文件会被清零。什么意思呢?比我打个比方,比如说你原先有一个文本文件,里面写了很多的内容。比如你写了一一篇诗,或者写了一篇文章,如果你用W的形式打开,我可以告诉你这个文件会被清零,就你以以前的内容全部都会被干掉。然后呢,你重新写入的呢,会从第一行开始写明白了吧,说这个地方要特别小心。如果你的你不是这样的意图,你不是想说把文件截截取,全部截断,再重新写入,你就不要以W形式打开,明白了吧?
04:00
那没关系,后面还有别的方式,AA这种形式呢,可能更多的情况用的是A。这个是打开一个文本文件,用追加的模式写入,大家理解什么叫追加吗?追加就是说往这个文件的屁股后边写,如果文件不存在,不存在它会创建一个新的。呃,如果说文件已经存在呢,它会在已有的文件内容追加内容。比如说你原先打个比方啊,同学们我就画一下,比如你原先有有有一个文件里面写了啊,写了三三行文本,那这个时候打开以A的形式打开呢,它就你再写一行的话,它在第四行写,而不是把前面截零明白了吧。RW呢是打开一个文献可以读写,也就是说如果是R加四,既可以读也可以写。W加呢?W加是打开一个文本文件,允许读写,如果文件已经存在呢?会被截断为零。如果不存在呢,会创建,但是R加是不会创建的,这是有区别的啊,就说W加呢,它。
05:07
他是干什么呀?他允许读,也允许写。呃,如果这个文件不存在,它会创建,但是R加是允许读也允许写,但是文件不存在,它不会创建,它会给你报错A加。A,加上是打开一个文部文件,允许读和写啊,你看原先这个地方只会往里面追加,不能读,对不对?读写如果文件不存在呢,就会创建一个新的文件,而而且呢,是读取会存文件的头开始写,追加从写入,这是追加模式,明白这意思了吧?那么我再提示大家,如果我们打开的是二进制文件。如果你是二进制文件,就说图片呢?什么叫二进制文件呢?打个比方,你是图片。或者视频等。像这种文件呢,你打开的形式,打开的所有的这个形式后面都需要多加一个B。
06:02
多加一个B。明白这个意思吧,多加一个B,你比如说呃,W babrb加啊,RB加这个地方这个这个选RB加,我这写很清楚了啊,就写成RB加,明白那这个或者是R加B,那么是WB加,W加B都可以,AB加AB加B,这都是一个意思啊,都是一个意思,但也就说在这个后面呢,如果是二进制,我们要多取一个B。把这个BB是代表什么含义呢?我说一下,B代表binary。Bary bary就是二进制的意思吗?注意一下,如果说你处理是图片视频,你跟我们前面的这种文本文件就是非二进制文件呢,是有一些区别的,就是后面要多加一个B。好,这是我们的这一个打开文件,那么还有关闭文件,有打开必然就会有关闭,我们把一个文件操作完了过后一定要注意关闭该文件。
07:01
一定要注意该变该关闭该文件。如果成功关闭这个文件呢?它会返回一个零,就这边会返回一个零,代表关闭成功。如果关闭文件使发生错误,函数会返回一个u off,这个函数实际上会清空缓存中的数据,关闭文件并释放用于该文件所占的内存。uf是定义在文件头的一个常量,前面我们讲过了,那也就是说,如果这个文件关闭异常,那么我们的数据有可能没有正确的写入。当然,这种情况一般很少见。但一定要注意哦,关闭文件一定要注意,一定要关闭啊,就学我们使用完。文件后啊,这个使用可能是读也可能是写,对吧,一定一定要将该文件干什么呢,关闭。那关闭的时候呢,你需要把这个文件的指针放在这个f close的这个行,这个行参里边,就是要把这个文件的指针传给f close,让它关闭。那么C语言空呢,还提供了各种函数,按字节呃,按字符或者按固定长度骤串来读写,前面呢我们已经看过了。
08:15
那这样子,同学们,我们现在已经介绍了文件的读写、打开和关闭,那待会儿呢,我们就具体的来举几个例子,怎么读入怎么写哈,那现在我把刚才讲的内容进行一个简单板书。我们板书一把,刚才我们讲的是C文件的读写。的两个重要函数对不对?好的,那读写呢,我这里先做了一个基本介绍,我们既可以读文本文件,也可以读取这个二进制文件。那么在使用这个读写的时候呢,我们首先第一步工作干什么呀?需要打开这个文件,打开这个文件主要的目的是要获取这个文件的指针,好,这边我有相应的说明。
09:02
对不对,相应的说明好,我把这个呢。给大家写到这里。是吧?诶,这两点写到这里,然后呢,这个函数哈,函数的这个一览。函数的说明,函数说明呢,这边我有一个列表,这个列表是需要大家有一个认识的,因为后面我们读写都离不开f open。这里重点的地方我都标成了红色,那么有有打开必然就会有关闭。关闭文件呢,我们也需要去在要需要认就是正确的去调用。F c f close呢,你一定要把你打开的这个文件的指针传给他,让他关闭,而且呢,我这里已经说过了,我们使用完文件过后,一定要注意关闭文件,否则会出现一些未知的错误。
10:00
你比如说你认为已经写进去的文件,结果你没有关闭,等到下一次打开,你发现上一次写入的内容没有保存,没有写进去,那就很恐怖了。所以说这里面我提示大家一定要关闭该文件哈,养成一个好习惯。养成一个好习惯好了,同学们,关于打开文件和关闭文件的两个重要函数,我们先讲到这儿,下面呢,我们就举例说明。
我来说两句