[b]java io流的分类:[/b]
1、从io流的两大操纵数据的形式分类。input stream 、output stream
2、从io流的操纵的最细粒度分类。byte(stream)、char(Reader)。
3、从使用场景的角度分类。
[b]过滤流的概念:[/b]
FilterInputStream :输入过滤流,此流的任何继承者都必须提供underlying input stream。
FilterOutputStream:输出过滤流,此流的任何继承着都必须提供数据输出的underlying output stream 。
类似的有:FilterReader,FilterWriter
其特殊之处: [b]关闭前,先刷新缓冲数据[/b]。(没搞懂sun 的公司的设计。既然不确定为缓冲流,为何这里这样实现)
[b]缓冲流的概念:[/b]
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
缓存流的特点:可以提供一定程度的缓存,提高系统的稳定性和读写效率。
[b]数据流的概念[/b]:
DataInput
DataInputStream extends FilterInputStream
DataOutput
DataOutputStream extends FilterOutputStream
缓存流的特点:实现了对underlying byte stream 按照数据的类型读和写。比如:读取int,byte等。
[b]内存流的概念[/b]:
CharArrayReader extends Reader
CharArrayWriter extends Writer
ByteArrayInputStream extends InputStream
ByteArrayOutputStream extends OutputStream
内存流的特点:实现了对byte 和 char 的数组的流形式操作。
[b]文件相关[/b]:
FileInputStream extends InputStream
FileOutputStream extends OutputStream
FileReader extends InputStreamReader
FileWriter extends OutputStreamWriter
文件流的特点:与文件相关,直接从文件中读取或者输出到文件中。文件流的读写与平台有关系,比如:一个文件是否允许多个对象同时写或者同时读,或者读和写交叉等待。
[b]字节字符转换流[/b]:
OutputStreamWriter extends Writer
InputStreamReader extends Reader
特点:可以把从流中读取的byte流转换的字符流。比如文件操作中FileReader 和 FileWriter都继承了上述转换的流。
[b]对象流[/b]
ObjectInput extends DataInput
ObjectInputStream extends InputStream implements ObjectInput
ObjectOutput extends DataOutput
ObjectOutputStream extends OutputStream implements ObjectOutput
特点:是实现byte流和java Object对象之间的转换功能。
[b]管道流[/b]
PipedInputStream
PipedOutputStream
PipedReader
PipedWriter
特点:实现两个线程之间的数据的传输。
[b]可回溯流[/b]
PushbackReader extends FilterReader
PushbackInputStream extends FilterInputStream
特点:可以回溯,就是读取字符后发现情况,可以回写到缓冲区,然后在读。当然回溯到缓冲区的数据,不会回写到 underlying stream
[b]随机文件读取[/b]
RandomAccessFile
特点:这是一个可以随机读取文件数据的api。 (这个文件的锁机制很重要,需要特别注意)
其他:
PrintStream extends FilterOutputStream
class PrintWriter extends Writer
all over
1、从io流的两大操纵数据的形式分类。input stream 、output stream
2、从io流的操纵的最细粒度分类。byte(stream)、char(Reader)。
3、从使用场景的角度分类。
[b]过滤流的概念:[/b]
FilterInputStream :输入过滤流,此流的任何继承者都必须提供underlying input stream。
FilterOutputStream:输出过滤流,此流的任何继承着都必须提供数据输出的underlying output stream 。
类似的有:FilterReader,FilterWriter
其特殊之处: [b]关闭前,先刷新缓冲数据[/b]。(没搞懂sun 的公司的设计。既然不确定为缓冲流,为何这里这样实现)
public void close() throws IOException {
try {
flush();
} catch (IOException ignored) {
}
out.close();
}
[b]缓冲流的概念:[/b]
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
缓存流的特点:可以提供一定程度的缓存,提高系统的稳定性和读写效率。
[b]数据流的概念[/b]:
DataInput
DataInputStream extends FilterInputStream
DataOutput
DataOutputStream extends FilterOutputStream
缓存流的特点:实现了对underlying byte stream 按照数据的类型读和写。比如:读取int,byte等。
[b]内存流的概念[/b]:
CharArrayReader extends Reader
CharArrayWriter extends Writer
ByteArrayInputStream extends InputStream
ByteArrayOutputStream extends OutputStream
内存流的特点:实现了对byte 和 char 的数组的流形式操作。
[b]文件相关[/b]:
FileInputStream extends InputStream
FileOutputStream extends OutputStream
FileReader extends InputStreamReader
FileWriter extends OutputStreamWriter
文件流的特点:与文件相关,直接从文件中读取或者输出到文件中。文件流的读写与平台有关系,比如:一个文件是否允许多个对象同时写或者同时读,或者读和写交叉等待。
[b]字节字符转换流[/b]:
OutputStreamWriter extends Writer
InputStreamReader extends Reader
特点:可以把从流中读取的byte流转换的字符流。比如文件操作中FileReader 和 FileWriter都继承了上述转换的流。
[b]对象流[/b]
ObjectInput extends DataInput
ObjectInputStream extends InputStream implements ObjectInput
ObjectOutput extends DataOutput
ObjectOutputStream extends OutputStream implements ObjectOutput
特点:是实现byte流和java Object对象之间的转换功能。
[b]管道流[/b]
PipedInputStream
PipedOutputStream
PipedReader
PipedWriter
特点:实现两个线程之间的数据的传输。
[b]可回溯流[/b]
PushbackReader extends FilterReader
PushbackInputStream extends FilterInputStream
特点:可以回溯,就是读取字符后发现情况,可以回写到缓冲区,然后在读。当然回溯到缓冲区的数据,不会回写到 underlying stream
[b]随机文件读取[/b]
RandomAccessFile
特点:这是一个可以随机读取文件数据的api。 (这个文件的锁机制很重要,需要特别注意)
其他:
PrintStream extends FilterOutputStream
class PrintWriter extends Writer
all over