gpt4 book ai didi

java - 使用 java.io 寻找 ByteArrayInputStream

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:53:08 25 4
gpt4 key购买 nike

如何查找(更改位置)ByteArrayInputStream (java.io)?这是很明显的事情,但我似乎无法在任何地方找到这个方法(mark/reset 是不够的,我需要将位置设置到任何地方InputStream).

如果使用 java.io 无法完成,我必须切换到 java.nio 并使用 ByteBuffer,如何才能我得到类似于 DataOutputStream 使用 java.nio 包装 ByteArrayOutputStream 的东西?我没有找到任何类型的可自动调整大小的缓冲区。

编辑:我找到了一种方法来实现我想要做的事情,但它有点困惑。 ImageIO.createImageInputStream 创建一个 ImageInputStream,这正是我想要的(可以查找和读取原语)。但是,使用 ByteArrayInputStream 会返回 FileCacheImageInputStream,这基本上意味着它将字节数组复制到一个文件中以进行查找。

这是我第一次尝试使用 Java IO 类,结果完全是负面的。它缺少一些基本 (IMO) 功能,但它有很多方法可以做同样的事情(例如,要从文件中读取原语,您可以使用 RandomAccessFileDataInputStream + FileInputStreamFileImageInputStreamFileChannel + ByteBuffer,甚至更多)。

最佳答案

您将使用reset()/skip()。我不能说它是世界上最好的 API,但它应该可以工作:

public void seek(ByteArrayInputStream input, int position)
throws IOException
{
input.reset();
input.skip(position);
}

当然,这是假设没有人调用过 mark()

关于java - 使用 java.io 寻找 ByteArrayInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3792747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com