以下是一些介绍:
InputStream | OutputStream -->子节流输入/输出的抽象类
FileInputStream | FileOutputStream -->实现文件的输入/输出
PipedInputStream| PipedOutputStream -->管道是线程之间同步通信的渠道,一个管道在两个线程之间建立。一个线程用PipedOutputStream以写的方式向另一个线程发送数据,负责接收的线程则通过PipedInputStream从管道中读取数据。
FilterInputStream | FilterOutputStream -->抽象类,为输入流提供了一些缓冲区、设置或查询读取以及把数据类型集合到基本数据类型、把已读取的某个字节退回去等处理,起到过滤作用。
(此类有以InputStream/OutputStream为参数的构造方法)
DataInputStream | DataOutputStream -->基本数据类型过滤流,提供了一些基于多字节的读取/写入方法,从而可以读取/写入基本数据类型的数据,例如boolean、int、float等数据。
BufferedInputStream | BufferedOutputStream-->为输入流/输出流提供缓冲区过滤以提高读取速度,输入流缓冲区长度默认为2K字节,输出流缓冲区长度默认为512字节,可以通过入口参数指定缓冲区的大小,输出流write时只有当缓冲区满或者被调用flush()方法时系统才会将缓冲区中的数据写入输出流中。
PushbackInputStream -->在读取数据的时候可以预读若干字节,或者说可以将已经读取的若干字节“退回”到输入流中。
(用于需要读取某个指定byte(序列)之前的数据的情况,当检测到这个byte(序列)后读取完成并通过unread方法将这个序列"退回"到输入流中,当下一次试图读取数据的时候就会检测到已经到达结尾)
LineNumberInputStream -->可以在数据读取中记录读取的行数。
(LineNumberInputStream是被反对使用的,从JDK1.1中开始更倾向于使用LineNumberReader)
PrintStream -->提供基本打印输出方法。
ByteArrayInputStream | ByteArrayOutputStream -->实现了从内存字节数组输入/输出的功能。Java的多线程通信常常利用内存缓冲区进行。例如,一个线程查询数据库,一个线程查询结果,那么这两个线程就是利用缓冲区进行通信。
SequenceInputStream -->用于将多个输入流连接到一个输入流。程序访问输入流序列时,可以使程序的效率得到提高。
(当调用read函数时,如果读到一个substream的结尾就关闭这个流继续从下一个substream的开始位置读)
StringBufferInputStream -->数据源为字符串的输入流
(StringBufferInputStream是被反对使用的,从JDK1.1中开始更倾向于使用StringReader来以String为参数创建stream)
ObjectInputStream | ObjectOutputStream-->用于对象操作序列化的输入/输出流类。(直接将Object传入输出流/直接从输入流中读取Object)
(ObjectInputStream类有以InputStream为参数的构造方法,通过ObjectOutputStream类进行输出的类必须实现Serializable接口)
Reader -->字符流输入的抽象类
BufferedReader-->读取输入流到缓冲区,以提高读取速度
(此类有以Reader为参数的构造方法)
LineNumberReader -->会在数据读取过程中记录读取的行数,行号从0递增。
(此类中的setLineNumber(int)并不会真的改变流中字符串的顺序,只会改变getLineNumber()返回的值)
CharArrayReader -->读取内存中的字符数组
InputStreamReader -->读取字节流并转换为字符流(是InputStream类与Reader类之间的桥梁)
(此类有以InputStream为参数的构造方法)
FileReader-->用于文件系统的输入
FilterReader -->过滤流的抽象类
(此类有以Reader为参数的构造方法)
PushbackReader -->在读取数据的时候可以预读下一个字节
PipedReader -->用于进行管道方式的输入。建立输入流管道连接到输出流
StringReader -->数据源为字符串的输入流
Writer -->字符流输出的抽象类
BufferedWriter -->将字符数据写入缓冲区,以提高写出速度
(此类有以Writer为参数的构造函数。此类有一个newLine()用于写出一个与平台有关的换行符,因为并不是所有平台都是"\n"作为换行符)
CharArrayWriter -->将字符数组数据写出到内存
OutputStreamWriter-->将字符流转换成字节流输出(是Writer类和OutputStream类之间的桥梁)
(此类有以OutputStream为参数的构造方法)
FileWriter-->用于文件系统的输出
FilterWriter -->过滤输出流的抽象类
(此类有以Writer为参数的构造方法,暂时没有实现子类)
PipedWriter -->用于管道方式的输出。建立输出流管道连接到输入流
StringWriter -->数据源为字符串的输入流(基于StringBuffer)
PrintWriter -->将格式化对象写入文本输出流,实现了PrintStream中的所有方法
(此类有以File为参数的构造方法,此类有以Writer为参数的构造方法)
参考:
《JAVA程序设计》
《Java语言程序设计》
http://docs.oracle.com/javase/6/docs/api/
https://www.ibm.com/developerworks/cn/java/j-lo-javaio/