- 二者所作用的对象不同
- 计量单位不同
stream是面向byte的, reader/writer是面向char的
1. Java中byte和char的区别
方面 | byte |
char |
---|---|---|
大小 (bit) | 8 | 16 |
是否有符号 | 有 (第一个bit为符号位) | 无 |
取值范围 | [-128, 127] | [0, 65535] |
编码形式 | 无 | utf-16 |
2. 二者在api上的不同
InputStream |
Reader |
---|---|
read(byte[] b, int off, int len) |
read(char[] cbuf, int off, int len) |
3. 二者之间的转换
InputStream
-> Reader
: InputStreamReader
InputStreamReader
中使用 StreamDecoder
这样一个Reader
来实现byte到char的转换
Reader
-> InputStream
: Reader
-> String
-> ByteArrayInputStream
/String#charAt
4. Reader/Writer的优化
BufferedReader
, BufferedWriter
二者里面会自己维护一个 char cb[]
来缓存读到的数据
不用自己在外面维护一个数组
ref:
网友评论