一、概述
InputStreamReader是Java中的输入流,是字符流与字节流之间的桥梁。它将字节流转换为字符流,以便于阅读和操作。
二、用法
InputStreamReader的用法非常简单,只需要创建一个InputStreamReader实例,并且为其传入一个输入流,然后就可以操作输入流中的字符了。
示例代码如下:
try {
InputStream inputStream = new FileInputStream("test.txt");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
int c;
while ((c = inputStreamReader.read()) != -1) {
System.out.print((char) c);
}
inputStreamReader.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
在上面的示例代码中,我们首先创建了一个FileInputStream实例作为输入流,然后创建了一个InputStreamReader实例,并为其传入了输入流和字符集编码。最后,我们通过while循环逐个读取字符,并输出到控制台。
三、编码方式
当创建InputStreamReader实例时,需要指定字符集编码方式,借助该字符集来将字节流转化为字符流。
常见的字符集编码方式包括:
- UTF-8:适用于英文、数字和词汇量较少的中文文本。
- GBK:适用于中文文本,尤其是涉及到繁体字和生僻字。
- GB2312:适用于简体中文文本。
示例代码如下:
try {
InputStream inputStream = new FileInputStream("test.txt");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
int c;
while ((c = inputStreamReader.read()) != -1) {
System.out.print((char) c);
}
inputStreamReader.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
上面的代码中,我们指定了UTF-8字符集,即将输入流中的字节码转换为UTF-8编码的字符流。
四、字符数组读取
当需要一次性读取多个字符时,可以使用字符数组读取的方式。
示例代码如下:
try {
InputStream inputStream = new FileInputStream("test.txt");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
char[] buffer = new char[1024];
int length;
while ((length = inputStreamReader.read(buffer)) != -1) {
String s = new String(buffer, 0, length);
System.out.print(s);
}
inputStreamReader.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
上面的示例代码中,我们创建了一个1024个char字符数组作为缓冲区,然后通过while循环逐个读取字符,读取结束后将字符数组转换为字符串输出至控制台。
五、小结
以上就是针对InputStreamReader流的详细讲解,包括其概述与用法、编码方式、字符数组读取等内容。希望本教程能够帮助到大家。
如果还有不懂的地方,欢迎留言探讨。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文详解JAVA中InputStreamReader流 - Python技术站