java io流类的功能概述

java io流的分类:

1、从io流的两大操纵数据的形式分类。input stream 、output stream

2、从io流的操纵的最细粒度分类。byte(stream)、char(Reader)。

3、从使用场景的角度分类。
过滤流的概念:

FilterInputStream :输入过滤流,此流的任何继承者都必须提供underlying input stream。
FilterOutputStream:输出过滤流,此流的任何继承着都必须提供数据输出的underlying output stream 。
类似的有:FilterReader,FilterWriter
其特殊之处: 关闭前,先刷新缓冲数据。(没搞懂sun 的公司的设计。既然不确定为缓冲流,为何这里这样实现)
  public void close() throws IOException {
	try {
	  flush();
	} catch (IOException ignored) {
	}
	out.close();
    }


缓冲流的概念:

BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
缓存流的特点:可以提供一定程度的缓存,提高系统的稳定性和读写效率。

数据流的概念
DataInput
DataInputStream extends FilterInputStream
DataOutput
DataOutputStream extends FilterOutputStream
缓存流的特点:实现了对underlying byte stream 按照数据的类型读和写。比如:读取int,byte等。


内存流的概念
CharArrayReader extends Reader
CharArrayWriter extends Writer
ByteArrayInputStream extends InputStream
ByteArrayOutputStream extends OutputStream
内存流的特点:实现了对byte 和 char 的数组的流形式操作。


文件相关
FileInputStream extends InputStream
FileOutputStream extends OutputStream
FileReader extends InputStreamReader
FileWriter extends OutputStreamWriter
文件流的特点:与文件相关,直接从文件中读取或者输出到文件中。文件流的读写与平台有关系,比如:一个文件是否允许多个对象同时写或者同时读,或者读和写交叉等待。

字节字符转换流
OutputStreamWriter extends Writer
InputStreamReader extends Reader

特点:可以把从流中读取的byte流转换的字符流。比如文件操作中FileReader 和 FileWriter都继承了上述转换的流。

对象流
ObjectInput extends DataInput
ObjectInputStream  extends InputStream implements ObjectInput
ObjectOutput extends DataOutput
ObjectOutputStream extends OutputStream implements ObjectOutput
特点:是实现byte流和java Object对象之间的转换功能。


管道流
PipedInputStream
PipedOutputStream
PipedReader
PipedWriter

特点:实现两个线程之间的数据的传输。

可回溯流
PushbackReader extends FilterReader
PushbackInputStream extends FilterInputStream

特点:可以回溯,就是读取字符后发现情况,可以回写到缓冲区,然后在读。当然回溯到缓冲区的数据,不会回写到 underlying stream

随机文件读取
RandomAccessFile
特点:这是一个可以随机读取文件数据的api。 (这个文件的锁机制很重要,需要特别注意)


其他:
PrintStream extends FilterOutputStream
class PrintWriter extends Writer

all over

你可能感兴趣的:(java io,java 流)