- java.lang.Object
-
- java.io.Reader
-
- java.io.InputStreamReader
-
- All Implemented Interfaces:
-
Closeable,AutoCloseable,Readable
- 已知直接子类:
-
FileReader
public class InputStreamReader extends Reader
InputStreamReader是从字节流到字符流的桥梁:它读取字节,并使用指定的charset将其解码为字符。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。每个调用InputStreamReader的read()方法之一可能会导致从底层字节输入流读取一个或多个字节。 为了使字节有效地转换为字符,可以从底层流读取比满足当前读取操作所需的更多字节。
为了最大的效率,请考虑在BufferedReader中包装一个InputStreamReader。 例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));- 从以下版本开始:
- 1.1
- 另请参见:
-
BufferedReader,InputStream,Charset
-
-
构造方法摘要
构造方法 Constructor 描述 InputStreamReader(InputStream in)创建一个使用默认字符集的InputStreamReader。InputStreamReader(InputStream in, String charsetName)创建一个使用命名字符集的InputStreamReader。InputStreamReader(InputStream in, Charset cs)创建一个使用给定字符集的InputStreamReader。InputStreamReader(InputStream in, CharsetDecoder dec)创建一个使用给定字符集解码器的InputStreamReader。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 voidclose()关闭流并释放与之相关联的任何系统资源。StringgetEncoding()返回此流使用的字符编码的名称。intread()读一个字符intread(char[] cbuf, int offset, int length)将字符读入数组的一部分。booleanready()告诉这个流是否准备好被读取。
-
-
-
构造方法详细信息
-
InputStreamReader
public InputStreamReader(InputStream in)
创建一个使用默认字符集的InputStreamReader。- 参数
-
in- 一个InputStream
-
InputStreamReader
public InputStreamReader(InputStream in, String charsetName) throws UnsupportedEncodingException
创建一个使用命名字符集的InputStreamReader。- 参数
-
in- 一个InputStream -
charsetName- 支持的名称charset - 异常
-
UnsupportedEncodingException- 如果不支持命名的字符集
-
InputStreamReader
public InputStreamReader(InputStream in, Charset cs)
创建一个使用给定字符集的InputStreamReader。- 参数
-
in- 一个InputStream -
cs- 一个字符集 - 从以下版本开始:
- 1.4
-
InputStreamReader
public InputStreamReader(InputStream in, CharsetDecoder dec)
创建一个使用给定字符集解码器的InputStreamReader。- 参数
-
in- 一个InputStream -
dec- 一个字符集解码器 - 从以下版本开始:
- 1.4
-
-
方法详细信息
-
getEncoding
public String getEncoding()
返回此流使用的字符编码的名称。如果编码具有历史名称,则返回该名称; 否则返回编码的规范名称。
如果此实例是使用
InputStreamReader(InputStream, String)构造函数创建的,则返回的名称对于编码而言是唯一的,可能与传递给构造函数的名称不同。 如果流已关闭,此方法将返回null。- 结果
-
该编码的历史名称,或
null如果流已关闭 - 另请参见:
-
Charset
-
read
public int read() throws IOException读一个字符- 重写:
-
read在Reader - 结果
- 字符读取,如果已经达到流的结尾,则为-1
- 异常
-
IOException- 如果发生I / O错误
-
read
public int read(char[] cbuf, int offset, int length) throws IOException将字符读入数组的一部分。- Specified by:
-
read在Reader - 参数
-
cbuf- 目的缓冲区 -
offset- 开始存储字符的偏移量 -
length- 要读取的最大字符数 - 结果
- 读取的字符数,如果已经达到流的结尾,则为-1
- 异常
-
IOException- 如果发生I / O错误 -
IndexOutOfBoundsException- 如果发生I / O错误
-
ready
public boolean ready() throws IOException告诉这个流是否准备好被读取。 如果InputStreamReader的输入缓冲区不为空,或者字节可以从底层字节流读取,则InputStreamReader就绪。- 重写:
-
ready在Reader - 结果
- 如果下一个read()保证不阻止输入,则为True,否则为false。 请注意,返回false并不能保证下一次读取将被阻止。
- 异常
-
IOException- 如果发生I / O错误
-
close
public void close() throws IOException描述从类别复制:Reader关闭流并释放与之相关联的任何系统资源。 一旦流已关闭,进一步的read(),ready(),mark(),reset()或skip()调用将抛出IOException。 关闭以前关闭的流无效。- Specified by:
-
close在接口AutoCloseable - Specified by:
-
close在接口Closeable - Specified by:
-
close在Reader - 异常
-
IOException- 如果发生I / O错误
-
-