English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

control de flujo Java

Java array

Java orientado a objetos (I)

Java orientado a objetos (II)

Java orientado a objetos (III)

Manejo de excepciones en Java

Java Lista (List)

Java Cola (Queue)

Java Conjuntos Map

Java Conjuntos Set

Java Entrada/Salida (I/O)/)

Java Reader/Writer

Otras temáticas de Java

Clase Java ByteArrayOutputStream

En este tutorial, aprenderemos con ejemplos Java ByteArrayOutputStream y sus métodos.

La clase ByteArrayOutputStream del paquete java.io se puede usar para escribir datos de array de salida de datos (en bytes).

Hereda de la clase abstracta OutputStream.

Nota:Mantiene un array de bytes interno para almacenar datos en ByteArrayOutputStream

Crea un ByteArrayOutputStream

Para crear un flujo de salida de array de bytes, debemos primero importar el paquete java.io.ByteArrayOutputStream. Después de importar el paquete, podemos crear el flujo de salida.

//Crea un ByteArrayOutputStream de tamaño predeterminado
ByteArrayOutputStream out = new ByteArrayOutputStream();

Aquí, creamos un flujo de salida que escribe datos en un tamaño predeterminado de32Se almacenan bytes en un array de bytes. Sin embargo, podemos cambiar el tamaño predeterminado del array.

//Crea un ByteArrayOutputStream con el tamaño especificado
ByteArrayOutputStream out = new ByteArrayOutputStream(int size);

Aquí, size especifica la longitud del array.

Métodos de ByteArrayOutputStream

La clase ByteArrayOutputStream proporciona implementaciones de diferentes métodos que existen en la clase OutputStream.

Método write()

  • write(int byte) - Escribe los bytes especificados en el flujo de salida

  • write(byte[] array) - Escribe los bytes del array especificado en el flujo de salida

  • write(byte[] arr, int start, int length)- Escribe desde la posición start un número de bytes igual a length en el flujo de salida del array

  • writeTo(ByteArrayOutputStream out1) -Escribe todos los datos del flujo de salida actual en el flujo de salida especificado

Ejemplo: escribir datos en ByteArrayOutputStream

import java.io.ByteArrayOutputStream;
class Main {
  public static void main(String[] args) {
    String data = "This is a line of text inside the string.";
    try {
    //Crea un flujo de salida
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      byte[] array = data.getBytes();
      //Escribe los datos en el flujo de salida
      out.write(array);
      //Recupera los datos del flujo de salida en formato de cadena
      String streamData = out.toString();
      System.out.println("Flujo de salida: "); + streamData);
      out.close();
    }
    catch (Exception e) {
      e.getStackTrace();
    }
  }
}

输出结果

Flujo de salida: 	This is a line of text inside the string.

En el ejemplo anterior, creamos un flujo de salida de bytes llamado output.

ByteArrayOutputStream output = new ByteArrayOutputStream();

Para escribir datos en el flujo de salida, utilizamos el método write().

Nota:El método getBytes() utilizado en el programa convierte una cadena en un array de bytes.

Accede a los datos desde ByteArrayOutputStream

  • toByteArray() - Devuelve el array existente en el flujo de salida

  • toString() - Devuelve todos los datos del flujo de salida en forma de cadena

Por ejemplo,

import java.io.ByteArrayOutputStream;
class Main {
  public static void main(String[] args) {
    String data = "This is data.";
    try {
      //Crea un flujo de salida
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      //Escribe los datos en el flujo de salida
      out.write(data.getBytes());
      //Devuelve un array de bytes
      byte[] byteData = out.toByteArray();
      System.out.print("Usando toByteArray() de los datos: ");
      for(int i=0; i<byteData.length; i++) {
        System.out.print((char)byteData[i]);
      }
      //Devuelve una cadena
      String stringData = out.toString();
      System.out.println("\nUsando toString() de los datos:	" + stringData);
      out.close();
    }
    catch (Exception e) {
      e.getStackTrace();
    }
  }
}

输出结果

使用 toByteArray () 的数据: This is data.
使用 toString () 的数据: This is data.

在上面的示例中,我们创建了一个字节数组来存储 toByteArray () 方法返回的数据。

然后使用 for 循环访问数组中的每个字节。在这里,使用类型转换将每个字节转换为相应的字符。

close () 方法

要关闭输出流,我们可以使用 close () 方法。

但是,close () 方法在 ByteArrayOutputStream 类中无效。即使调用了 close () 方法,我们也可以使用此类的方法。

ByteArrayOutputStream 的其他方法

方法内容描述
size ()返回输出流中数组的大小
flush ()清除输出流