【问题标题】:ByteArrayInputStream, SequenceInputStream, StringReader where to useByteArrayInputStream、SequenceInputStream、StringReader在哪里使用
【发布时间】:2014-01-14 07:02:32
【问题描述】:

java.io 类太多了,有些我真的不明白什么时候需要它们,例如:

字节数组输入流、字节数组输出流

序列输入流,

PushbackInputStream、PushbackReader

字符串读取器...

我的意思是一些现实生活中的用法

谁能解释一下...

【问题讨论】:

标签: java inputstream outputstream stringreader bytearrayinputstream


【解决方案1】:

我想说你的问题太宽泛了。

但是,可以对java.io package 进行一个非常基本的概述。它包含用于数据输入和输出操作的接口,例如从文件中读取字节。只有几个基本的接口/类:

  • DataInput / ObjectInput - 读取 Java 原语和对象
  • DataOutput / ObjectOutput - 编写 Java 原语和对象
  • InputStream - 读取单个字节
  • OutputStream - 写个人字节
  • Reader - 读取字符数据
  • Writer - 写入字符数据

还有其他有用的接口(如Closeable),但这些不太重要。


最好阅读这些类的 JavaDoc。一些例子:

  1. 很明显,您会使用FileOutputStream 将某些内容写入文件。
  2. 字符数据由字节表示(由字符编码定义),因此您可以使用OutputStreamWriter 包装任何输出流。
  3. 您有byte[] 并想像从InputStream 一样读取它?使用ByteArrayInputStream
  4. 您希望能够将读取的字节返回给阅读器(通常只支持一次传递)?用PushbackReader 包裹你的读者。
  5. 您有一些String 并想像从Reader 一样读取它?使用StringReader
  6. ...

因此,如果您需要一些特定的流/读取器/写入器,请查看java.io 包,搜索互联网并在需要时询问有关 SO 的问题。


当然还有java.nio package,你应该知道。但那是针对不同的主题。

【讨论】:

  • 我真正想要的是......一般不使用它们......它们特殊用途的一些例子......就像我刚刚发现可以使用字节数组输入流从 URL 或数据库中读取一些数据块(可能是图像)...
  • 对于 SequenceInputStream 我找不到有用的用途
  • 只需阅读 JavaDoc...它可以连接多个流。假设您想将单个输入流移交给某个组件,该组件应读取两个文件...new SequenceInputStream(new FileInputStream("fileA"), new FileInputStream("fileB")).
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 2011-04-17
  • 2012-10-07
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多