第22章 Kotlin I/O与文件管理
Kotlin I/O(输入与输出)是基于Java I/O流技术,但是Java I/O流技术使用起来比较繁琐,Kotlin提供了很多扩展,使代码变得简洁。本章介绍Kotlin I/O流和文件管理相关知识。
22.1 Java I/O流概述
Kotlin I/O流技术主要来自于Java I/O流技术,因此有必要先介绍一下Java I/O流技术。Java将数据的输入流和输出操作当作“流”来处理,“流”是一组有序的数据序列。“流”分为两种形式:输入流和输出流,从数据源中读取数据是输入流,将数据写入到目的地是输出流。
22.1.1 Java流设计理念
如图22-1所示,数据输入的数据源有多种形式,如文件、网络和键盘等,键盘是默认的标准输入设备。而数据输出的目的地也有多种形式,如文件、网络和控制台,控制台是默认的标准输出设备。
所有的输入形式都抽象为输入流,所有的输出形式都抽象为输出流,它们与设备无关。
22.1.2 Java流类继承层次
以字节为单位的流称为字节流,以字符为单位的流称为字符流。Java 提供4个顶层抽象类,两个字节流抽象类:InputStream和OutputStream;两个字符流抽象类:Reader和Writer。
1.字节输入流
字节输入流根类是InputStream,如图22-2所示它有很多子类,这些类的说明如表22-1所示。
2.字节输出流
字节输出流根类是OutputStream,如图22-3所示它有很多子类,这些类的说明如表22-2所示。
3.字符输入流
字符输入流根类是Reader,这类流以16位的Unicode编码表示的字符为基本处理单位。如图22-4所示它有很多子类,这些类的说明如表22-3所示。
4.字符输出流