Java InputStream to ByteBuffer
2022-09-01 08:42:58
我正在阅读dds纹理,但是由于一旦构建了jar,我就无法访问这些纹理,并且必须使用。url
file
InputStream
所以我需要知道如何从.java.nio.ByteBuffer
java.io.InputStream
Ps:无论通过第三部分库,我只需要它工作
我正在阅读dds纹理,但是由于一旦构建了jar,我就无法访问这些纹理,并且必须使用。url
file
InputStream
所以我需要知道如何从.java.nio.ByteBuffer
java.io.InputStream
Ps:无论通过第三部分库,我只需要它工作
对我来说,在这种情况下最好的是Apache commons-io来处理这个和类似的任务。
该类型具有一个静态方法,用于读取 和 返回 .IOUtils
InputStream
byte[]
InputStream is;
byte[] bytes = IOUtils.toByteArray(is);
在内部,这将创建 一个并将字节复制到输出,然后调用 。ByteArrayOutputStream
toByteArray()
更新:只要您有,正如@Peter指向的那样,您必须转换为byte array
ByteBuffer
ByteBuffer.wrap(bytes)
JAVA 9 UPDATE:如@saka1029所述,如果您使用的是java 9 +,则可以使用默认API,该API现在包括InputStream::readAllBytes
函数,因此不需要外部库InputStream
InputStream is;
byte[] bytes = is.readAllBytes()
一个整洁的解决方案,不需要第三方库
ByteBuffer byteBuffer = ByteBuffer.allocate(inputStream.available());
Channels.newChannel(inputStream).read(byteBuffer);