IO流也称为输入、输出流,就是用来读写数据的。
每次读取一个字节存在什么问题?
性能较慢
读取中文字符输出无法避免乱码问题
如何使用字节输入流读取中文内容输出不乱码呢?
定义一个与文件一样的的字节数组,一次性读取完文件的全部字节。
直接把文件数据全部读取到一个字节数组可以避免乱码,是否存在问题?
如果文件过大,字节数组可能引起内存溢出。
字节流适合做一切文件数据的拷贝吗?
任何文件的底层都是字节,拷贝是一字不漏的转移字节,只要前后文件格式、编码一致没有任何问题。
字符流的好处,每次读取一个字符存在什么问题?
读取中文字符不会出现乱码(如果代码和文件编码一致)
性能较慢
缓冲流概述
缓冲流也成为高效流、或者高级流。之前学习的字节流可以成为原始流。
作用:缓冲流自带缓冲区、可以提高原始字节流、字符流读写数据的性能。
字节缓冲流优化原理:
字节缓冲输入流自带了8KB缓冲池,以后我们直接从缓冲池读取数据,所以性能较好。
字节缓冲输出流自带了8KB缓冲池,数据就直接写入到缓冲池中去,写数据性能较高。
字符缓冲输入流:
作用:提高字符输入流读取数据的性能,除此之外多了按照行读取数据的功能。
字符缓冲输出流:
作用:提高字符输出流写数据的性能,除此之外多了换行功能。
对象序列化:
作用:以内存为基准,把内存中的对象存储到磁盘文件中去,称为对象序列化
使用到的流是对象字节输出流:ObjectOutputStream
对象反序列化:
作用:以内存为基准,把存储到磁盘文件中去的对象数据恢复成内存中的对象,成为对象反序列化。
使用到的流是对象字节输入流:ObjectInputStream
打印流:
作用:打印流可以实现方便、高效的打印数据到文件中去。