一.
Input
和
Output
1.
stream
代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在
Java
的
IO
中,所有的
stream
(包括
Input
和
Out stream
)都包括两种类型:
1.1
以字节为导向的
stream
以字节为导向的
stream
,表示以字节为单位从
stream
中读取或往
stream
中写入信息。以字
节为导向的
stream
包括下面几种类型:
1) input
stream
:
1) ByteArrayInputStream
:把内存中的一个缓冲区作为
InputStream
使用
2) StringBufferInputStream
:把一个
String
对象作为
InputStream
3) FileInputStream
:把一个文件作为
InputStream
,实现对文件的读取操作
4) PipedInputStream
:实现了
pipe
的概念,主要在线程中使用
5) SequenceInputStream
:把多个
InputStream
合并为一个
InputStream
2) Out
stream
1) ByteArrayOutputStream
:把信息存入内存中的一个缓冲区中
2) FileOutputStream
:把信息存入文件中
3) PipedOutputStream
:实现了
pipe
的概念,主要在线程中使用
4) SequenceOutputStream
:把多个
OutStream
合并为一个
OutStream
1.2
以
Unicode
字符为导向的
stream
以
Unicode
字符为导向的
stream
,表示以
Unicode
字符为单位从
stream
中读取或往
stream
中写入信息。以
Unicode
字符为导向的
stream
包括下面几种类型:
1) Input
Stream
1) CharArrayReader
:与
ByteArrayInputStream
对应
2) StringReader
:与
StringBufferInputStream
对应
3) FileReader
:与
FileInputStream
对应
4) PipedReader
:与
PipedInputStream
对应
2) Out
Stream
1) CharArrayWrite
:与
ByteArrayOutputStream
对应
2) StringWrite
:无与之对应的以字节为导向的
stream
3) FileWrite
:与
FileOutputStream
对应
4) PipedWrite
:与
PipedOutputStream
对应
以字符为导向的
stream
基本上对有与之相对应的以字节为导向的
stream
。两个对应类实现
的功能相同,字是在操作时的导向不同。如
CharArrayReader
:和
ByteArrayInputStream
的作
用都是把内存中的一个缓冲区作为
InputStream
使用,所不同的是前者每次从内存中读取一
个字节的信息,而后者每次从内存中读取一个字符。
1.3
两种不现导向的
stream
之间的转换
InputStreamReader
和
OutputStreamReader
:把一个以字节为导向的
stream
转换成一个以字
符为导向的
stream
。
2. stream
添加属性
2.1
“为
stream
添加属性”的作用
运用上面介绍的
Java
中操作
IO
的
API
,我们就可完成我们想完成的任何操作了。但通过
FilterInputStream
和
FilterOutStream
的子类,我们可以为
stream
添加属性。下面以一个例子
来说明这种功能的作用。
如果我们要往一个文件中写入数据,我们可以这样操作: