文件分为二进制格式和文本格式。

数据在计算机中都是以二进制的形式表现的,一般来说字节是最小的数据逻辑单位,所以也可以说数据都是以字节序列的形式表现的,不管是在内存中还是磁盘文件中。如果直接把内存中的数据按字节写入文件,所得到的文件就是二进制格式的;如果将所有的数据都当作字符序列来处理,根据选择的字符集重新编码,然后把编码的结果写到文件,所得到的文件就是文本格式的。

比如说有个int类型的数据,值为1234,在内存中以00 00 04 d2的形式存在,存储到文件的结果有下面几种可能:

在写入文本文件的情况下,选择不同的编码方案会有不同的结果。用一个图简单表示下文本文件的IO过程:

文本文件存在着重新编码的问题,比如把内存中的00_00_04_d2(int 1234)按照UTF-8重新编码成31_32_33_34。字符数据和字节序列之间需要有字符集作为映射的关系,字符集就像一个字典,编码的时候根据字符查到对应的编码,作为存储的字节序列;解码的时候根据字节序列查到对应的字符,才能供人阅读。不同的字符集有不同的映射关系,所以解码时使用的字符集和编码时使用的要一致。

字符在内存中当然也是以字节序列存在的,使用的是Unicode编码,你可以使用Integet.toHexString(int)获取其内容。所以将字符数据写入到文本文件,其实存在着从一种字符编码结果到另一种字符编码结果的转变过程。

最新文章

  1. [转] 传统 Ajax 已死,Fetch 永生
  2. StartUML 破解
  3. LintCode "Find Peak Element II"
  4. 1.html5 学习要求,Html 5发展历程
  5. JAVA之执行cmd命令
  6. nginx+uwsgi+django1.8.5配置
  7. HTML5入门(一)
  8. if语句判断身高体重是否标准
  9. 基于三星ARM9(S3C2410)的交通违章抓拍系统的开发
  10. java判断是否为汉字
  11. Swift和Javascript的神奇魔法
  12. POJ 1486二分图的必要边
  13. Druid的简介
  14. Node中包的加载机制
  15. 在Linux环境下安装Python3
  16. OC分割输入验证码的视觉效果
  17. [leetcode.com]算法题目 - Sort Colors
  18. Beta阶段第二次冲刺
  19. python调用.net动态库
  20. Py2.7 no module named tkinter

热门文章

  1. 谈谈对Spring IOC(控制反转)的理解--转
  2. angular 开发之proxy
  3. iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址(2014年2月19日更新版)
  4. Unity下实现弹簧骨骼(Spring Bone)
  5. 2017ACM暑期多校联合训练 - Team 6 1010 HDU 6105 Gameia (博弈)
  6. JS 判断手机操作系统代码
  7. kippo蜜罐搭建
  8. linux下C语言实现多线程通信—环形缓冲区,可用于生产者(producer)/消费者(consumer)【转】
  9. Linux-Load Average解析(转)
  10. 对 makefile 中 .DEFAULT 的理解