首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InputStream vs InputStreamReader

InputStream vs InputStreamReader
EN

Stack Overflow用户
提问于 2010-07-07 21:07:50
回答 6查看 70.9K关注 0票数 62

InputStreamReader上使用InputStream有什么好处,反之亦然。

以下是InputStream的实际应用示例:

代码语言:javascript
复制
InputStream input = new FileInputStream("c:\\data\\input-text.txt");

int data = input.read();
while(data != -1) {
  //do something with data...
  doSomethingWithData(data);

  data = input.read();
}
input.close();

下面是一个使用InputStreamReader的例子(显然是在InputStream的帮助下):

代码语言:javascript
复制
InputStream inputStream = new FileInputStream("c:\\data\\input.txt");
Reader      reader      = new InputStreamReader(inputStream);

int data = reader.read();
while(data != -1){
    char theChar = (char) data;
    data = reader.read();
}

reader.close();  

Reader是否以特殊的方式处理数据?

我只是想用Java语言来理解整个i/o流数据方面。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-07-07 21:12:39

它们代表了一些不同的东西。

InputStream是所有可能字节流的祖先类,它本身并不有用,但所有子类(如您正在使用的FileInputStream )对于处理二进制数据都很有用。

另一方面,InputStreamReader (及其父Reader)专门用于处理字符(so字符串),因此它们可以很好地处理字符集编码(utf8、iso-8859-1等)。

简单的答案是:如果需要二进制数据,可以使用InputStream (也可以是特定的,如DataInputStream),如果需要处理文本,可以使用InputStreamReader

票数 89
EN

Stack Overflow用户

发布于 2010-07-07 21:10:47

InputStreamReader是用来直接读取字符的。

因此,将它们读取为int,然后转换为char并不是真正的最佳选择。

这是我相信的主要区别。

InputStream给你字节,InputStreamReader给你已经给你的字符,所以它一次读取InputStream 8位。

此外,如果您正在阅读大段文本,您甚至可以将InputStreamReader包装在BufferedReader中,它为您提供了一些很好的方法,比如说一次读取整行。

这对你有帮助吗?

你也可以阅读这篇文章:https://docs.oracle.com/javase/tutorial/essential/io/charstreams.html

干杯,

票数 31
EN

Stack Overflow用户

发布于 2010-07-07 21:14:22

从InputStreamReader javadoc:

将字节流转换为字符流的类。从源输入流读取的数据由默认或提供的字符转换器转换成字符。默认编码取自"file.encoding“系统属性。{@code InputStreamReader}包含从源流读取的字节缓冲区,并根据需要将这些字节转换为字符。

对于实际包含已知编码的字符的InputStreams,请使用阅读器。否则,你只能获取字节数,并且必须“手动”转换为char。

这两种read方法的区别是:

InputStream::read读取单个byte并将其作为int返回,而InputStreamReader::read读取单个char (遵循编码)并将其作为int返回。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3194918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档