Java InputStream到ByteBuffer
我正在读取dds纹理,但是自从构建了jar之后,我无法通过访问这些纹理url
,file
而不得不使用它InputStream
。
所以,我需要知道我怎么能获得java.nio.ByteBuffer
从java.io.InputStream
。
无论通过第3部分库,我都只需要它起作用
回答:
对我而言,在这种情况下最好的是Apache commons-io来处理此任务和类似任务。
该IOUtils
类型具有静态方法来读取InputStream
和返回byte[]
。
InputStream is;byte[] bytes = IOUtils.toByteArray(is);
在内部,这会创建一个ByteArrayOutputStream
并将字节复制到输出,然后调用toByteArray()
。
:只要你有bytearray
,如@Peter指出,你必须转换为ByteBuffer
ByteBuffer.wrap(bytes)
:如@saka1029所述,如果您使用的是Java
9+,则可以使用默认的InputStream
API,该API现在包含InputStream::readAllBytes
函数,因此不需要外部库
InputStream is;byte[] bytes = is.readAllBytes()
以上是 Java InputStream到ByteBuffer 的全部内容, 来源链接: utcz.com/qa/418806.html