J'ai besoin de convertir un tableau d'octets en ByteArrayOutputStream afin de pouvoir l'afficher à l'écran.
byte[] bytes = ....;
ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length);
baos.write(bytes, 0, bytes.length);
Description de la méthode:
Écrit len octets du tableau d'octets spécifié en commençant à l'offset dans ce flux de sortie du tableau d'octets.
Vous ne pouvez pas afficher un ByteArrayOutputStream. Je suppose que vous essayez de faire
byte[] bytes = ...
String text = new String(bytes, "UTF-8"); // or some other encoding.
// display text.
Vous pouvez faire en sorte que ByteArrayOutputStream fasse quelque chose de similaire, mais ce n'est pas évident, efficace ou la meilleure pratique (car vous ne pouvez pas contrôler l'encodage utilisé)
Avec JDK/11 , vous pouvez utiliser l'API writeBytes(byte b[])
qui appelle finalement la write(b, 0, b.length)
comme suggéré dans la réponse de Josh =.
/**
* Writes the complete contents of the specified byte array
* to this {@code ByteArrayOutputStream}.
*
* @apiNote
* This method is equivalent to {@link #write(byte[],int,int)
* write(b, 0, b.length)}.
*
* @param b the data.
* @throws NullPointerException if {@code b} is {@code null}.
* @since 11
*/
public void writeBytes(byte b[]) {
write(b, 0, b.length);
}
L'exemple de code se transformerait simplement en -
byte[] bytes = new byte[100];
ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length);
baos.writeBytes(bytes);