一、前言
IO是Java基础非常重要的一部分,并且其体系比较庞大,因此,本文主要对一些常用的流进行总结。
二、常用的流
(一)常用流的分类
(二)常用流的体系结构
一些没有总结到的流,如分割流、合并流、数据流等,可点击下载详细分类图。(提取码: nxb5)
三、补充知识点
(一)字符流
其实FileReader底层也是调用了FileInputStream来读取字节,然后FileReader将字节转换为字符。
(二)缓冲流
BufferedReader提供了独有的 readLine()方法:用来读取一行字符,并且在流的末尾返回的不是 -1,而是null;
BufferedWriter提供了独有的 newLIne()方法:用来写入换行,不需要在自己写入\r\n(Windows系统下)
进行换行
(三)转换流
从字节流转换为字符流。读取字节,使用指定的字符集将其解码为字符,字符集可以指定也可以使用默认的。
(四)序列化流
要被序列化的类必须实现 Serializable 接口;
不需要被序列化的属性可以使用 transient 关键字;
如果不希望每次修改类的定义时,生成的class文件中的序列化都是新的,那么可以自己手动给类添加序列号。
1 | static final long serialVersionUID = xxx; |
关于serialVersionUID的更多细节,可查看Java基础学习总结——Java对象的序列化和反序列化.
(五)打印流
可以使用System.setOut(PrintStream p)方法来修改打印流的打印输出位置(默认是控制台)。
1 | System.setOut(new PrintStream("XXX")); |
Java新手,若有错误,欢迎指正!