java.io 文件分类
2024-08-27 13:41:48
文件分为二进制格式和文本格式。
数据在计算机中都是以二进制的形式表现的,一般来说字节是最小的数据逻辑单位,所以也可以说数据都是以字节序列的形式表现的,不管是在内存中还是磁盘文件中。如果直接把内存中的数据按字节写入文件,所得到的文件就是二进制格式的;如果将所有的数据都当作字符序列来处理,根据选择的字符集重新编码,然后把编码的结果写到文件,所得到的文件就是文本格式的。
比如说有个int类型的数据,值为1234,在内存中以00 00 04 d2的形式存在,存储到文件的结果有下面几种可能:
在写入文本文件的情况下,选择不同的编码方案会有不同的结果。用一个图简单表示下文本文件的IO过程:
文本文件存在着重新编码的问题,比如把内存中的00_00_04_d2(int 1234)按照UTF-8重新编码成31_32_33_34。字符数据和字节序列之间需要有字符集作为映射的关系,字符集就像一个字典,编码的时候根据字符查到对应的编码,作为存储的字节序列;解码的时候根据字节序列查到对应的字符,才能供人阅读。不同的字符集有不同的映射关系,所以解码时使用的字符集和编码时使用的要一致。
字符在内存中当然也是以字节序列存在的,使用的是Unicode编码,你可以使用Integet.toHexString(int)获取其内容。所以将字符数据写入到文本文件,其实存在着从一种字符编码结果到另一种字符编码结果的转变过程。
最新文章
- [转] 传统 Ajax 已死,Fetch 永生
- StartUML 破解
- LintCode ";Find Peak Element II";
- 1.html5 学习要求,Html 5发展历程
- JAVA之执行cmd命令
- nginx+uwsgi+django1.8.5配置
- HTML5入门(一)
- if语句判断身高体重是否标准
- 基于三星ARM9(S3C2410)的交通违章抓拍系统的开发
- java判断是否为汉字
- Swift和Javascript的神奇魔法
- POJ 1486二分图的必要边
- Druid的简介
- Node中包的加载机制
- 在Linux环境下安装Python3
- OC分割输入验证码的视觉效果
- [leetcode.com]算法题目 - Sort Colors
- Beta阶段第二次冲刺
- python调用.net动态库
- Py2.7 no module named tkinter
热门文章
- 谈谈对Spring IOC(控制反转)的理解--转
- angular 开发之proxy
- iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址(2014年2月19日更新版)
- Unity下实现弹簧骨骼(Spring Bone)
- 2017ACM暑期多校联合训练 - Team 6 1010 HDU 6105 Gameia (博弈)
- JS 判断手机操作系统代码
- kippo蜜罐搭建
- linux下C语言实现多线程通信—环形缓冲区,可用于生产者(producer)/消费者(consumer)【转】
- Linux-Load Average解析(转)
- 对 makefile 中 .DEFAULT 的理解