简介
一个优秀的程序必然离不开IO操作,不论是读写网络数据还是本地文件,都必须有扎实的IO操作技巧。
核心内容: 1.字节流、字符流的区别。 2.缓冲流的使用。 3.随机文件读写。
手机用户请
横屏
获取最佳阅读体验,REFERENCES
中是本文参考的链接,如需要链接和更多资源,可以关注其他博客发布地址。
平台 | 地址 |
---|---|
CSDN | https://blog.csdn.net/sinat_28690417 |
简书 | https://www.jianshu.com/u/3032cc862300 |
个人博客 | https://zacsnz.github.io/NoteBooks/ |
正文
IO也写作“I/O”,可理解为In和Out,即输入与输出。 所以IO体系的基本功能就是:读和写。
作用:读写设备上的数据,硬盘文件、内存、键盘、网络...
根据数据的走向,可分为:输入流、输出流 根据处理的数据类型,可分为:字节流、字符流
字节流: 可以处理所有类型的数据,如MP3、图片、文字、视频等。在读取时,读到一个字节就返回一字节。
字符流:仅能处理纯文本数据,如txt文本等。在读取时,读到一个或多个字节,先查找指定的编码表,然后将查到的字符返回。
在Java中对应的类都是以「Reader」、[Writer]结尾
字节是通过网络传输信息或在硬盘或内存中存储信息的单位,是算机信息技术用于计量存诸容量和传输容量的一种计量单位。 1个字节等于8位二进制, 即一个8位的二进制数,是一个很具体的存储空间。 如0x01, 0x45, OxFA,…
字符是人们使用的记号,抽象意义上的一个符号。
如]
、中
、a
、$
、1
等等。
字符集
也称作编码
,各个国家和地区所制定的不同ANSI编码标准中,都只规定了各自语言所需"字符"。
比如:汉字标准(GB2312)中没有规定韩国语字符怎样存储。这些ANSI编码标准所规定的内容包含两层含义:
各个国家和地区在制定编码标准的时候, “字符的集合”和“编码”一般都是同时制定的。因此,平常我们所说的“字符集" ,比如: GB2312, GBK, JIS等,除了有字符的集合
这层含义外,同时也包含了编码
的含义。字符
是以在UNICODE中的序号存在的,那么我们称这种字符串为UNICODE字符串或者宽字节字符串。对于UNICODE字符串来说,不管在什么环境下,它所代表的字符
内容总是不变的。用来给UNICODE字符集编码的标准有很多种,
比如: UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig等。
Tips:
对于任何数据,都可以通过字节流来操作。 对于文本数据,如果利用字符流操作,需要指定相应的编码规则。
字节流读取数据
字节流写数据
利用中间数据时间字节流数据的拷贝
读取数据
写入数据 & 拷贝数据
修改缓冲区大小
Tips:
缓冲区过大和过小都不好,需要根据文件大小动态调整。
读取数据
写入数据 & 拷贝数据(文本文件)
读写文件
Tips:
每个线程任务根据区块下标进行偏移写入。
功能十分强大,具体参考Apache IO 官方API。
链接文本
- JDK8 官方API
https://docs.oracle.com/javase/8/docs/api/
- Apache Commons IO API
https://commons.apache.org/proper/commons-io/javadocs/api-release/index.html
本文素材来源于https://www.jikexueyuan.com/course/215_9.html?ss=1