通常程序需要从外部获取/输出信息
这个“外部”范围很广,包括诸如键盘、显示器、文件、磁盘、网络、另外一个程序等
“信息”也可以是任何类型的,例如一个对象、串字符、图像、声音等
这个“外部”范围很广,包括诸如键盘、显示器、文件、磁盘、网络、另外一个程序等
“信息”也可以是任何类型的,例如一个对象、串字符、图像、声音等
通过使用java.io包中的输入/输出流类就可以达到输入输出信息的目的
I/O流(Input/Output)
在Java中将信息的输入与输出过程抽象为I/O流
输入是指数据流入程序
输出是指数据从程序流出
一个流就是一个从源流向目的地的数据序列
IO流类一旦被创建就会自动打开
通过调用close方法,可以显式关闭任何一个流,如果流对象不再被引用,Java的垃圾回收机制也会隐式地关闭它
输入/输出流可以从以下几个方面进行分类
从流的方向划分
输入流
输出流
从流的分工划分
节点流
处理流
从流的内容划分
面向字符的流
面向字节的流
面向字符的流
针对字符数据的特点进行过优化,提供一些面向字符的有用特性
源或目标通常是文本文件
面向字符的抽象类——Reader和Writer
java.io包中所有字符流的抽象基类
Reader提供了输入字符的API
Writer提供了输出字符的API
它们的子类又可分为两大类
节点流:从数据源读入数据或往目的地写出数据
处理流:对数据执行某种处理
多数程序使用这两个抽象类的一系列子类来读入/写出文本信息
例如FileReader/FileWriter用来读/写文本文件