sirve sequenceinputstream que para example array java string bytearrayoutputstream bytearrayinputstream

java - para - sequenceinputstream



Convertir el contenido de un ByteArrayInputStream a cadena (4)

Leí este post pero no estoy siguiendo. He visto this pero no he visto un ejemplo adecuado de conversión de un ByteArrayInputStream a String usando un ByteArrayOutputStream .

Para recuperar el contenido de un ByteArrayInputStream como una String , ¿se recomienda utilizar un ByteArrayOutputstream o hay una forma más preferible?

Estaba considerando este ejemplo y ByteArrayInputStream y utilizé un Decorator para aumentar la funcionalidad en el tiempo de ejecución. ¿Algún interés en que esta sea una mejor solución para emplear un ByteArrayOutputStream ?


¿Por qué nadie mencionó org.apache.commons.io.IOUtils ?

import java.nio.charset.StandardCharsets; import org.apache.commons.io.IOUtils; String result = IOUtils.toString(in, StandardCharsets.UTF_8);

Sólo una línea de código.


Un ByteArrayOutputStream puede leer desde cualquier InputStream y al final produce un byte[] .

Sin embargo, con un ByteArrayInputStream es más sencillo:

int n = in.available(); byte[] bytes = new byte[n]; in.read(bytes, 0, n); String s = new String(bytes, StandardCharsets.UTF_8); // Or any encoding.

Para un ByteArrayInputStream available() obtiene el número total de bytes.

Respuesta al comentario: usando ByteArrayOutputStream

ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buf = new byte[8192]; for (;;) { int nread = in.read(buf, 0, buf.length); if (nread <= 0) { break; } baos.write(buf, 0, nread); } in.close(); baos.close(); byte[] bytes = baos.toByteArray();

Aquí puede haber cualquier InputStream.



Use el Scanner y pase a su constructor ByteArrayInputStream luego lea los datos de su escáner, verifique este ejemplo:

ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(new byte[] { 65, 80 }); Scanner scanner = new Scanner(arrayInputStream); scanner.useDelimiter("//Z");//To read all scanner content in one String String data = ""; if (scanner.hasNext()) data = scanner.next(); System.out.println(data);