文件打开模式

1. C 的文件打开模式

   在C的语法中,打开文件有十二种模式:

    

   - 这里解释下什么是文本文件和二进制文件?

       计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本文件)。二进制文件和文本文件在磁盘上都是按照二进制存储的,只不过代表的含义不同。

       a. 文本文件是把文件的内容先转化成一个一个的字符,然后存储每个字符在内存中的表示,即ascii码,也就是说文本文件就只有char类型。

       b. 二进制文件则不是粗暴地全按char类型来存储或读取,每个元素可以有不同的类型,比如int、double、char等,文件存储的是每个类型的元素在内存

          中的表示。比如int型元素在内存中的表示就是将其转为二进制,double型元素就是按IEEE754表示,char型元素就是按ascii码表示。

       注:实际上,二进制文件只是储存数据,并不写明数据类型,比如 12 53 21 45 58 62 35 34 这么一串二进制,可以认为是 2 个 4 字节的实型,其

           也可以认为是 8 个字节的字符型。因此,面对一个二进制文件,我们不能准确地知道它的含义,我们需要它的数据储存方式的说明。这个说明

           我们第几个字节到第几个字节是什么类型的数据,储存的数据是什么含义。所以我们用txt程序来打开一个二进制文件一般是会乱码的,要想查看其

           内容需要特定的解码器。

   - 为什么要使用二进制文件。原因大概有三个:

       a. 第二进制文件比较节约空间,这两者储存字符型数据时并没有差别。但是在储存数字,特别是实型数字时,二进制更节省空间,比如储存 Real*4 的数

          据:3.1415927,文本文件需要 9 个字节,分别储存:3 . 1 4 1 5 9 2 7 这 9 个 ASCII 值,而二进制文件只需要 4 个字节(DB 0F 49 40)。

       b. 内存中参加计算的数据都是用二进制无格式储存起来的,因此,使用二进制储存到文件就更快捷。如果储存为文本文件,则需要一个转换的过程。在

          数据量很大的时候,两者就会有明显的速度差别了。

   

   1)'r'模式:

      a. 打开文件进行只读操作,即只能从文件读取内容。

      b. 若欲操作的文件不存在,则打开失败

      c. 成功打开文件后,文件指针位于文件开头

      d. 打开文件后,不会清空文件原有的内容。

      e. 可以从文件中任意位置读取内容。

 

   2)'w'模式:

      a. 打开文件进行只写操作,即只能向文件写入内容。

      b. 若欲操作的文件不存在,则新建文件

      c. 成功打开文件后,文件指针位于文件开头

      d. 打开文件后,会清空文件原有的内容。

      e. 可以向文件中任意位置写入内容,且进行写入操作时会覆盖原有位置的内容。

 

   3)'a'模式:

      a. 打开文件进行追加操作,即只能向文件写入内容。

      b. 若欲操作的文件不存在,则新建文件

      c. 成功打开文件后,文件指针位于文件结尾

      d. 打开文件后,会清空文件原有的内容。

      e. 只能向文件末尾追加内容。

 

   4)'r+'模式:

      a. 打开文件进行读写操作,即既能读取,也能写入

      b. 若欲操作的文件不存在,则打开失败

      c. 成功打开文件后,文件指针位于文件开头

      d. 打开文件后,不会清空文件原有的内容。

      e. 不论是读取内容还是写入内容,都可以在文件的任意位置进行,且进行写入操作时会覆盖原有的内容。

 

   5)'w+'模式:

      a. 打开文件进行读写操作,即既能读取,也能写入

      b. 若欲操作的文件不存在,则新建文件

      c. 成功打开文件后,文件指针位于文件开头

      d. 打开文件后,不会清空文件原有的内容。

      e. 不论是读取内容还是写入内容,都可以在文件的任意位置进行,且进行写入操作时会覆盖原有的内容。

 

   6)'a+'模式:

      a. 打开文件进行读写操作,即既能读取,也能写入

       b. 若欲操作的文件不存在,则新建文件

      c. 成功打开文件后,文件指针位于文件结尾

      d. 打开文件后,不会清空文件原有的内容。

      e. 读取内容可以在文件的任意位置进行,但进行写入操作时只会追加在文件尾部。

 

2. C++ 的文件流打开模式

   单个模式一览表:

   

   组合模式:

   

 

posted @ 2020-06-22 20:30  _yanghh  阅读(586)  评论(0编辑  收藏  举报