Java Io 类图结构
image.png- 命名特点:
字节流:读写的都是字节。
输入流:[xxx]InputStream
输出流:[xxx]OutputStream
字符流:读写的都是字符。
输入流:[xxx]Reader
输出流:[xxx]Writer
对象序列化
对象序列化就是把一个对象变为二进制数据流的一种方法。
一个类要想被序列化,就必须实现java.io.Serializable接口。虽然这个接口中没有任何方法,就如同之前的cloneable接口一样。实现了这个接口之后,就表示这个类具有被序列化的能力。
当我们使用Serializable接口实现序列化操作的时候,如果一个对象的某一个属性不想被序列化保存下来,那么我们可以使用transient关键字来修饰对象属性,这样该对象就不会序列化。
- 何时使用字符流,何时使用字节流?为什么?
使用字符流的应用场景: 如果是读写字符数据的时候则使用字符流。
使用字节流的应用场景:不需要读写字符数据的时候就使用字节流,如读取avi、jpeg 等格式文件时。
网上的一种说法:字节流读取单个字节,字符流读取单个字符(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码是 3 个字节,中文编码是 2 个字节。)字节流用来处理二进制文件(图片、MP3、视频文件),字符流用来处理文本文件(可以看做是特殊的二进制文件,使用了某种编码,人可以阅读)。简而言之,字节是个计算机看的,字符才是给人看的。
参考:
1 Java IO流详解
2 Java IO 详解
网友评论