Java流在处理上分为字符流和字节流。字符流处理的单元为2个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。
Java内用Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和java内Unicode字符流之间的转换。而类 InputStreamReader和OutputStreamWriter处理字符流和字节流的转换。字符流(一次可以处理一个缓冲 区)一次操作比字节流(一次一个字节)效率高。
( 一 )以字节为导向的 stream------ InputStream/OutputStream
InputStream和OutputStream是两个abstact类,对于字节为导向的 stream 都扩展这两个鸡肋(基类 ^_^ );
1、InputStream
1.1
ByteArrayInputStream -- 把内存中的一个缓冲区作为 InputStream 使用 . 如使用 http://www.5a520.cn
construct---
(A)ByteArrayInputStream(byte[]) 创建一个新字节 数组输入流( ByteArrayInputStream ),它从指定字节数组中读取数据( 使用 byte 作为其缓冲区数 组)
(B)---ByteArrayInputStream(byte[], int, int) 创建一个新字节数组输入流,它从指定 字节数组中读取数据。
---mark:: 该字节数组未被复制。
1.2
StringBufferInputStream -- 把一个 String 对象作为 InputStream .
construct---
StringBufferInputStream(String) 据指定串创建一个读取数据的输入流 串。
注释:不推荐使用 StringBufferInputStream 方法。 此类不能将字符正确的转换为字节。
同 JDK 1.1 版中的类似,从一个串创建一个流的最佳方法是采用 StringReader 类。
1.3
FileInputStream -- 把一个文件作为 InputStream ,实现对文件的读取操作
construct---
(A)FileInputStream(File name) 创建一个输入文件流,从指定的 File 对象读取数据。
(B)FileInputStream(FileDescriptor) 创建一个输入文件流,从指定的文件描 述器读取数据。
(C)-FileInputStream(String name) 创建一个输入文件流,从指定名称的文 件读取数据。
method ---- read() 从当前输入流中读取一字节数据。
read(byte[]) 将 当前输入流中 b.length 个字节数据读到一个字节数组中。
read(byte[], int, int) 将输入流 中 len 个字节数据读入一个字节数组中。