web-dev-qa-db-ja.com

Java InputStream to ByteBuffer

私はddsテクスチャを読んでいますが、一度jarを構築したので、urlfileを介してそれらのテクスチャにアクセスできず、代わりにInputStreamを使用する必要があります。

したがって、Java.​nio.ByteBufferからJava.io.InputStreamを取得する方法を知る必要があります。

Ps:サードパートライブラリを介して、問題なく動作する必要があります

20
elect

私にとってこの場合の最良の方法は Apache commons-io です。

IOUtils型には、InputStreamを読み取り、_byte[]_を返す静的メソッドがあります。

_InputStream is;
byte[] bytes = IOUtils.toByteArray(is);
_

内部的にこれはByteArrayOutputStreamを作成し、バイトを出力にコピーしてからtoByteArray()を呼び出します。

[〜#〜] update [〜#〜]:_byte array_がある限り、 @ Peter ポイント、ByteBufferに変換する必要があります

_ByteBuffer.wrap(bytes)
_

Java 9 UPDATE@ saka1029 で述べているようにJava 9を使用している場合+デフォルトのInputStream AP​​Iを使用できます。このAPIには _InputStream::readAllBytes_ 関数が含まれているため、外部ライブラリは不要です

_InputStream is;
byte[] bytes = is.readAllBytes()
_
35
Jordi Castilla