Cómo convertir InputStream a un array byte[] en Java? Todas las formas
¡Hola a todos! Soy nuevo en Java y me encontré con este problema: necesito leer todos los datos de un InputStream (por ejemplo, de un archivo o de una respuesta HTTP) y obtenerlos como un array byte[]. Pero no sé cómo hacerlo correctamente.
Esto es lo que he intentado:
InputStream input = new FileInputStream("data.bin");
byte[] data = ??? // ¿Cómo obtener el array de bytes?
El problema es que InputStream no me permite conocer el tamaño de los datos de antemano. El método available() no devuelve el tamaño completo, solo lo que ya está disponible para leer sin bloqueo. Intenté leer en un bucle, pero el código queda desordenado y a menudo falla.
He leído sobre ByteArrayOutputStream, pero no entiendo cómo usarlo correctamente. También he oído sobre readAllBytes() en Java 9, pero mi proyecto está en Java 8. Por favor, indíquenme una forma universal y confiable que funcione en todas las versiones de Java.
Importante: necesito obtener exactamente un array de bytes, no un String.
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Los 10 mejores frameworks PHP para desarrollo web en 2025