【发布时间】:2011-04-17 02:30:18
【问题描述】:
如何寻找(更改位置)ByteArrayInputStream (java.io)?这是很明显的事情,但我似乎无法在任何地方找到这种方法(mark/reset 还不够,我需要将位置设置为InputStream 上的任何位置)。
如果使用java.io 无法完成,我必须切换到java.nio 并使用ByteBuffer,我怎样才能得到类似于DataOutputStream 使用ByteArrayOutputStream 包装java.nio 的东西?我没有找到任何类型的自动调整大小的缓冲区。
编辑:我找到了一种方法来实现我正在尝试做的事情,但它有点混乱。 ImageIO.createImageInputStream 创建一个 ImageInputStream,这正是我想要的(可以查找和读取原语)。但是,使用ByteArrayInputStream 会返回FileCacheImageInputStream,这基本上意味着它将字节数组复制到文件中只是为了寻找。
这是我第一次尝试使用 Java IO 类,结果完全是负面的。它缺少一些基本 (IMO) 功能,并且它有很多方法可以做同样的事情(例如,从文件中读取原语,您可以使用 RandomAccessFile、DataInputStream + FileInputStream、FileImageInputStream、@987654340 @ + ByteBuffer,甚至更多)。
【问题讨论】:
-
你觉得使用
seek有什么问题吗? -
@Vilay Mathew:什么
seek方法?我在 ByteArrayInputStream 上没有看到任何内容。 -
Java 中的文件 i/o 非常混乱。我把它教给一年级的学生,并试图让它变得简单,但这总是让人困惑。