2011年11月26日土曜日

[基础知识] 文本文件与二进制文件

1.
文本文件和二进制文件在 Windows 与 Linux 下, 物理上是相同的 (二进制串存储), 但逻辑都是不同的

2
计算机的存储在物理上是二进制的, 所以文本文件与二进制文件的区别并不是物理上的, 而是逻辑上的, 这两者只是在编码层次上有差异
文本文件, 是字符序列, 存储的是基于字符的编码, 如 1 个 unicode 字符存储为 2 字节, 1 一个 ascii 字符存储为 1 字节, 在读取或写入时需编码转换 (二进制到指定编码)
二进制文件, 存储的就是对应的值在内存中的形式, 值编码

3.
以文本方式或以二进制方式打开, 与此文件是文本文件还是二进制文件是根本无关的概念

4.
以什么方式打开, 对于 Linux 没有不同, 只对 Windows 不同, 并且不同也仅仅影响到在 Windows 下以文本方式打开时, 并且以文本方式写入时, 将内存缓冲区中的 '\n' 转换成 '\r\n', 再写入文件, 以文本方式读取时, 将 '\n' 转换成 '\r\n', 送入内存缓冲区

+-------+-----------+-------+----+--------------------------+
| 平台   | 打开方式   | 写入方式|影响 |        说明               |
+-------+-----------+-------+----+--------------------------+
|Win/Lin|二进制/文本  |二进制  |无   |                          |
|Lin    |二进制/文本  |文本    |无   |                          |
|Win    |二进制      |文本    |无   |                          |
|Win    |文本        |文本    |有*  |\n (内存) <--> \r\n (文件) |
+-------+-----------+--------+----+-------------------------+
* windows 下, 以文本方式打开, 并且文本方式写入时, 会有 '\n' 到 '\r\n' 的转换

5. 文本工具打开一个文件的过程
记事本, 它首先读取文件物理上所对应的二进制比特流, 然后按照所选择的解码方式来解释这个流, 在将解释结果显示出来. 一般来说,如果选取的解码是 ASCII 码, 它 8 bit 8 bit 地来解释这个文件流. 文本文件的存储与其读取基本上是个逆过程, 而二进制文件的存取与文本文件的存取差不多, 只是编解码方式不同而已

6. 文本文件与二进制文件的优缺点
文本文件与二进制文件的区别仅仅是编码上不同, 他们的优缺点就是编码的优缺点
文本文件优点: 将字符输出的操作中不需转换直接输出
文本文件缺点: 一个字符占一个字节, 文件占用的存储空间较多, 读写时需要转换, 访问的时空效率不高
二进制文件优点: 数据与数据在内存中的表示形式一致, 占单元数与操作系统和数据类型有关, 存储数据时非常紧凑, 占用存储空间较少, 在读写时不需进行转换, 具有较高的时空效率
二进制文件的缺点: 二进制文件无法直接以字符形式输出, 必须要经过转换

0 件のコメント:

コメントを投稿