当前位置: 首页 > 面试题库 >

InputStream与InputStreamReader

叶文博
2023-03-14
问题内容

使用InputStreamover 的好处是什么InputStreamReader,反之亦然。

这是一个实际的例子InputStream

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的帮助下):

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是否以特殊方式处理数据?

只是想让我了解i/oJava 的整个流数据方面。


问题答案:

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

InputStream是所有可能的字节
的祖先类,它本身没有用,但是所有子类(如FileInputStream您正在使用的子类)都非常适合处理二进制数据。

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

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



 类似资料:
  • 问题内容: 如何从URL获取InputStream? 例如,我想在url上获取文件,并通过servlet将其作为Java中的InputStream读取。 我试过了 但是我得到的是一个错误: 问题答案: 使用正确的URL(包括协议!)。例如 也可以看看: 使用java.net.URLConnection触发和处理HTTP请求

  • 问题内容: 请提供指针以帮助我模拟该java InputStream对象。这是我希望模拟的代码行: 问题答案:

  • 问题内容: 我正在读取dds纹理,但是自从构建了jar之后,我无法通过访问这些纹理,而不得不使用它。 所以,我需要知道我怎么能获得从。 附言: 无论通过第3部分库,我都只需要它起作用 问题答案: 对我而言,在这种情况下最好的是Apache commons-io来处理此任务和类似任务。 该类型具有静态方法来读取和返回。 在内部,这会创建一个并将字节复制到输出,然后调用。 UPDATE :只要你有,如

  • 问题内容: 我有这个InputStream: 如何将其转换为ServletInputStream? 我努力了: 但不起作用。 编辑: 我的方法是这样的: 我正在尝试将所有请求都转换为小写。 问题答案: 试试这个代码。

  • 问题内容: 我需要在不创建File实例的情况下获取InputStream的大小(以字节为单位)。使用Java NIO有什么办法吗? 问题答案: 一般的?您只需要继续读取和读取(例如,一次又一次地读入同一个缓冲区),就可以计算已读取的字节数,直到到达流的末尾为止。 当然,您将无法读取数据本身……如果要这样做,则需要在读取数据时将其保留,例如,将其复制到。 (如果您能够在计算长度的同时处理数据,则只需

  • 描述 (Description) java.util.zip.ZipFile.getInputStream(ZipEntry entry)方法返回一个输入流,用于读取指定zip文件条目的内容。 声明 (Declaration) 以下是java.util.zip.ZipFile.getInputStream(ZipEntry entry)方法的声明。 public InputStream getIn