Je lis les textures dds, mais depuis que j'ai construit le pot, je ne peux pas accéder à ces textures via url
et file
et je dois utiliser InputStream
à la place.
Il me faudrait donc savoir comment obtenir un Java.nio.ByteBuffer
d'un Java.io.InputStream
.
Ps: peu importe les bibliothèques de la 3e partie, j'ai juste besoin que ça marche
Pour moi, le meilleur dans ce cas est Apache commons-io pour gérer cela et des tâches similaires.
Le type IOUtils
a une méthode statique pour lire un InputStream
et retourner un byte[]
.
InputStream is;
byte[] bytes = IOUtils.toByteArray(is);
En interne, cela crée un ByteArrayOutputStream
et copie les octets dans la sortie, puis appelle toByteArray()
.
[~ # ~] mise à jour [~ # ~] : tant que vous avez le byte array
, comme @ Peter pointé, vous devez convertir en ByteBuffer
ByteBuffer.wrap(bytes)
MISE À JOUR Java 9 : comme indiqué par @ saka1029 si vous utilisez Java 9 + vous pouvez utiliser l'API par défaut InputStream
qui inclut désormais la fonction InputStream::readAllBytes
, donc aucune bibliothèque externe requise
InputStream is;
byte[] bytes = is.readAllBytes()