I/O 的速度要比内存速度慢,尤其是在现在这个大数据时代背景下,I/O 的性能问题更是尤为突出,I/O 读写已经成为很多应用场景下的系统性能瓶颈。
I/O 是机器获取和交换信息的主要渠道,而流是完成 I/O 操作的主要方式。
通常把机器或者应用程序接收外界的信息称为输入流(InputStream),从机器或者应 用程序向外输出的信息称为输出流(OutputStream),合称为输入 / 输出流(I/O Streams)。
Java 的 I/O 操作类在包java.io 下,其中 InputStream、OutputStream以及 Reader、 Writer 类是 I/O 包中的 4 个基本类,它们分别处理字节流和字符流。如下图所示:
-
1. 字节流
InputStream/OutputStream 是字节流的抽象类,这两个抽象类又派生出了若干子类,不 同的子类分别处理不同的操作类型。如果是文件的读写操作,就使用 FileInputStream/FileOutputStream;如果是数组的读写操作,就使用 ByteArrayInputStream/ByteArrayOutputStream;如果是普通字符串的读写操作,就使 用 BufferedInputStream/BufferedOutputStream。具体内容如下图所示: