java.io 文件分类
2016-07-02 17:05
204 查看
文件分为二进制格式和文本格式。
数据在计算机中都是以二进制的形式表现的,一般来说字节是最小的数据逻辑单位,所以也可以说数据都是以字节序列的形式表现的,不管是在内存中还是磁盘文件中。如果直接把内存中的数据按字节写入文件,所得到的文件就是二进制格式的;如果将所有的数据都当作字符序列来处理,根据选择的字符集重新编码,然后把编码的结果写到文件,所得到的文件就是文本格式的。
比如说有个int类型的数据,值为1234,在内存中以00 00 04 d2的形式存在,存储到文件的结果有下面几种可能:
在写入文本文件的情况下,选择不同的编码方案会有不同的结果。用一个图简单表示下文本文件的IO过程:
文本文件存在着重新编码的问题,比如把内存中的00_00_04_d2(int 1234)按照UTF-8重新编码成31_32_33_34。字符数据和字节序列之间需要有字符集作为映射的关系,字符集就像一个字典,编码的时候根据字符查到对应的编码,作为存储的字节序列;解码的时候根据字节序列查到对应的字符,才能供人阅读。不同的字符集有不同的映射关系,所以解码时使用的字符集和编码时使用的要一致。
字符在内存中当然也是以字节序列存在的,使用的是Unicode编码,你可以使用Integet.toHexString(int)获取其内容。所以将字符数据写入到文本文件,其实存在着从一种字符编码结果到另一种字符编码结果的转变过程。
数据在计算机中都是以二进制的形式表现的,一般来说字节是最小的数据逻辑单位,所以也可以说数据都是以字节序列的形式表现的,不管是在内存中还是磁盘文件中。如果直接把内存中的数据按字节写入文件,所得到的文件就是二进制格式的;如果将所有的数据都当作字符序列来处理,根据选择的字符集重新编码,然后把编码的结果写到文件,所得到的文件就是文本格式的。
比如说有个int类型的数据,值为1234,在内存中以00 00 04 d2的形式存在,存储到文件的结果有下面几种可能:
在写入文本文件的情况下,选择不同的编码方案会有不同的结果。用一个图简单表示下文本文件的IO过程:
文本文件存在着重新编码的问题,比如把内存中的00_00_04_d2(int 1234)按照UTF-8重新编码成31_32_33_34。字符数据和字节序列之间需要有字符集作为映射的关系,字符集就像一个字典,编码的时候根据字符查到对应的编码,作为存储的字节序列;解码的时候根据字节序列查到对应的字符,才能供人阅读。不同的字符集有不同的映射关系,所以解码时使用的字符集和编码时使用的要一致。
字符在内存中当然也是以字节序列存在的,使用的是Unicode编码,你可以使用Integet.toHexString(int)获取其内容。所以将字符数据写入到文本文件,其实存在着从一种字符编码结果到另一种字符编码结果的转变过程。
相关文章推荐
- Java中的多线程编程(一)
- Eclipse做安卓的时候,button按钮把那个textview文本挡住了
- Zookeeper的Java客户端(要把zookeeper用的足够熟练,才能说掌握了它)
- eclipse 编码助手 之 代码模板的设置
- Java中的异常
- 寻找最快的Java可随机访问排序列表
- JavaSE 基础 第61节 石头剪刀布小游戏
- Spring MVC POJO传参方式
- Struts2 MVC基础介绍
- Java入门笔记1
- spring mvc 的Controller类里的方法线程安全问题
- me常用的Eclipse 快捷操作
- Spring并发访问的线程安全性问题
- 如何利用记事本编写并运行一个java程序
- java环境变量的配置
- Solr JAVA客户端SolrJ 4.9使用示例教程
- 3.盘点springmvc的常用接口之HttpMessageConverter
- Java集合框架(下)之List与Set的contains()方法
- 2.盘点springmvc的常用接口之HandlerMethodReturnValueHandler
- JavaWeb的编码问题