阅读(2647) (0)

鸿蒙OS InputStreamReader

2022-10-17 09:43:18 更新

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 错误