Java 流在处理上分为字符流和字节流。
字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串;
字节流处理单元为 1 个字节,操作字节和字节数组。
( 一 )以字节为导向的流------InputStream/OutputStream
以字节为导向的流,表示以字节为单位从流中读取或往流中写入信息。以字节为导向的流包括下面几种类型:
1.1、InputStream
类图:
1)ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用
2)StringBufferInputStream:把一个String对象作为InputStream
3)FileInputStream:把一个文件作为InputStream,实现对文件的读取操作
4)PipedInputStream:实现了pipe的概念,主要在线程中使用
5)SequenceInputStream:把多个InputStream合并为一个InputStream
1.2.、OutputStream
类图:
1)ByteArrayOutputStream:把信息存入内存中的一个缓冲区中
2)FileOutputStream:把信息存入文件中
3)PipedOutputStream:实现了pipe的概念,主要在线程中使用
4)SequenceOutputStream:把多个OutStream合并为一个OutStream
( 二 )以字符为导向的流 Reader/Writer
以Unicode字符为导向的流,表示以Unicode字符为单位从流中读取或往流中写入信息。以Unicode字符为导向的流包括下面几种类型:
2.1、Reader
类图:
1)CharArrayReader:与ByteArrayInputStream对应
2)StringReader:与StringBufferInputStream对应
3)FileReader:与FileInputStream对应
4)PipedReader:与PipedInputStream对应
2.2、Writer
类图:
1)CharArrayWriter:与ByteArrayOutputStream对应
2)StringWriter:无与之对应的以字节为导向的stream
3)FileWriter:与FileOutputStream对应
4)PipedWriter:与PipedOutputStream对应
三、两种不同导向的流之间的转换
InputStreamReader和OutputStreamWriter:把一个以字节为导向的stream转换成一个以字符为导向的stream。