Java学习(十六)IO流
一、IO流概述及其分类
- IO流概述
IO流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式
Java用于操作流的对象都在IO包中 java.io
- IO流分类
1.按数据流向分类
是站在内存角度看,分为输入流(读数据)和输出流(写数据)
2.按照数据类型分类
字节流 可以读写任何类型的文件 比如音频 视频 文本文件
字符流 只能读写文本文件
分类图如下:
- IO流基类概述
a:字节流的抽象基类:
InputStream (读),OutputStream(写)。
b:字符流的抽象基类:
Reader (读), Writer(写)。
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
二、IO流整体继承体系介绍
整体继承体系图如下
节点流(介质流)
父类 | InputStream | OutputStream | Reader | Writer |
---|---|---|---|---|
文件 | FileInputStream | FileOutputStream | FileReader | FileWriter |
数组 | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter |
字符串 | StringReader | StringWriter | ||
管道 | PipedInputStream | PipedOutputStream | PipeReader | PipeWriter |
1.文件流:从文件系统中的某个文件中获得字节或者字符进行输入输出。
2.数组流:包含一个内部缓冲区,该缓冲区包含字节或字符。
3.字符串流:其源为一个字符串的字符流。
4.管道:管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节或字符。
处理流(装饰流)
父类 | InputStream | OutputStream | Reader | Writer |
---|---|---|---|---|
转换流 | InputStreamReader | OutputStreamWriter | ||
缓冲流 | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
数据流 | DataInputStream | DataOutputStream | ||
对象流 | ObjectInputStream | ObjectOutputStream | ||
打印流 | PrintStream | PrintWriter |
1、转换流:字节流转换为字符流,是字节流通向字符流的桥梁,使用指定的字符集读取字节并将其解码为字符。
2、缓冲流:字节缓冲流会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。字符缓冲流从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
3、数据流:数据流允许应用程序以与机器无关方式从底层读取基本 Java 数据类型,允许应用程序以适当方式将基本 Java 数据类型写入输出流中。
4、对象流:ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。如果流是网络套接字流,则可以在另一台主机上或另一个进程中重构对象。
5.打印流:能够方便地打印各种数据值表示形式。