InputStreamReader
java.lang.Object
|—java.io.Reader
|—|—java.io.InputStreamReader
public class InputStreamReader
extends Reader
InputStreamReader 是从字节流到字符流的桥梁:它读取字节并使用指定的字符集将它们解码为字符。 它使用的字符集可以由名称指定,也可以显式给出,或者可以接受平台的默认字符集。
InputStreamReader 的 read() 方法之一的每次调用都可能导致从底层字节输入流中读取一个或多个字节。 为了实现字节到字符的有效转换,可以从底层流中预先读取比满足当前读取操作所需的更多的字节。
为了获得最高效率,请考虑将 InputStreamReader 包装在 BufferedReader 中。 例如:
BufferedReader in
= new BufferedReader(new InputStreamReader(System.in));
Since:
JDK1.1
字段摘要
从类 java.io.Reader 继承的字段 |
---|
lock |
构造函数摘要
构造函数 | 描述 |
---|---|
InputStreamReader(InputStream in) | 创建一个使用默认字符集的 InputStreamReader。 |
InputStreamReader(InputStream in, String charsetName) | 创建一个使用命名字符集的 InputStreamReader。 |
InputStreamReader(InputStream in, Charset cs) | 创建一个使用给定字符集的 InputStreamReader。 |
InputStreamReader(InputStream in, CharsetDecoder dec) | 创建一个使用给定字符集解码器的 InputStreamReader。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
void | close() | 关闭流并释放与其关联的任何系统资源。 |
String | getEncoding() | 返回此流使用的字符编码的名称。 |
int | read() | 读取单个字符。 |
int | read(char[] cbuf, int offset, int length) | 将字符读入数组的一部分。 |
boolean | ready() | 告诉这个流是否准备好被读取。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
从类 java.io.Reader 继承的方法 |
---|
mark, markSupported, read, read, reset, skip |
构造函数详细信息
InputStreamReader
public InputStreamReader(InputStream in)
创建一个使用默认字符集的 InputStreamReader。
参数:
参数名称 | 参数描述 |
---|---|
in | 输入流 |
InputStreamReader
public InputStreamReader(InputStream in, String charsetName) throws UnsupportedEncodingException
创建一个使用命名字符集的 InputStreamReader。
参数:
参数名称 | 参数描述 |
---|---|
in | 输入流 |
charsetName | 支持的字符集的名称 |
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedEncodingException | 如果不支持命名字符集 |
InputStreamReader
public InputStreamReader(InputStream in, Charset cs)
创建一个使用给定字符集的 InputStreamReader。
参数:
参数名称 | 参数描述 |
---|---|
in | 输入流 |
cs | 一个字符集 |
Since:
1.4
InputStreamReader
public InputStreamReader(InputStream in, CharsetDecoder dec)
创建一个使用给定字符集解码器的 InputStreamReader。
参数:
参数名称 | 参数描述 |
---|---|
in | 输入流 |
dec | 一个字符集解码器 |
Since:
1.4
方法详情
getEncoding
public String getEncoding()
返回此流使用的字符编码的名称。
如果编码具有历史名称,则返回该名称; 否则返回编码的规范名称。
如果此实例是使用 InputStreamReader(java.io.InputStream,java.lang.String) 构造函数创建的,则返回的名称(对于编码而言是唯一的)可能与传递给构造函数的名称不同。 如果流已关闭,此方法将返回 null。
返回:
此编码的历史名称,如果流已关闭,则为 null
read
public int read() throws IOException
读取单个字符。
覆盖:
read in class Reader
返回:
读取的字符,如果已到达流的末尾,则为 -1
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
read
public int read(char[] cbuf, int offset, int length) throws IOException
将字符读入数组的一部分。
指定者:
read in class Reader
参数:
参数名称 | 参数描述 |
---|---|
cbuf | 目标缓冲区 |
offset | 开始存储字符的偏移量 |
length | 要读取的最大字符数 |
返回:
读取的字符数,如果已到达流的末尾,则为 -1
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
ready
public boolean ready() throws IOException
告诉这个流是否准备好被读取。 如果 InputStreamReader 的输入缓冲区不为空,或者可以从底层字节流中读取字节,则 InputStreamReader 已准备就绪。
覆盖:
ready in class Reader
返回:
如果保证下一个 read() 不会阻塞输入,则为 true,否则为 false。 请注意,返回 false 并不能保证下一次读取将阻塞。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
close
public void close() throws IOException
从类复制的描述:Reader
关闭流并释放与其关联的任何系统资源。 关闭流后,进一步的 read()、ready()、mark()、reset() 或 skip() 调用将引发 IOException。 关闭以前关闭的流没有效果。
指定者:
在接口 AutoCloseable 中关闭
指定者:
在接口Closeable中关闭
指定者:
close in class Reader
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |