inputstream的reader详解
时间: 2023-10-07 15:03:58 浏览: 58
InputStream是Java IO中的一个字节流,它用于从输入源(比如文件、网络连接等)中读取字节数据。InputStreamReader是Java中的一个字符流,它是字节流到字符流的桥梁,可以将字节流转换为字符流。
在Java中,字符流和字节流的区别主要在于它们处理数据的方式不同。字符流主要用于读取和处理文本数据,而字节流主要用于读取和处理二进制数据。InputStreamReader的作用就是将字节流中的数据解码成字符流,以便于Java程序读取和处理。
使用InputStreamReader读取数据时,我们需要指定一个字符集,例如UTF-8、GBK等,以确保正确地解码字节流中的数据。另外,InputStreamReader还可以指定字符集来将字符流转换为字节流输出。它的常用构造方法有两个:
- InputStreamReader(InputStream in):创建一个使用系统默认字符集的InputStreamReader对象。
- InputStreamReader(InputStream in, String charsetName):创建一个使用指定字符集的InputStreamReader对象。
例如,我们可以使用如下代码创建一个InputStreamReader对象,并将字节流转换为字符流:
```
InputStream inputStream = new FileInputStream("example.txt");
InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
```
上述代码中,我们将一个UTF-8编码的字节流转换为字符流,并创建了一个InputStreamReader对象。这个对象可以用来读取和处理字符流数据。读取字符流数据时,我们可以使用InputStreamReader的read()方法,例如:
```
int c;
while ((c = reader.read()) != -1) {
System.out.print((char) c);
}
```
上述代码中,我们使用InputStreamReader的read()方法读取字符流数据,并将字符流数据转换为字符输出。需要注意的是,InputStreamReader的read()方法返回的是一个int类型的整数,它表示读取到的字符的Unicode码值。如果返回-1,表示已经读取完了所有字符。