Java : DataOutputStream con ejemplos

DataOutputStream (Java SE 21 & JDK 21) en Java con ejemplos.
Encontrará ejemplos de código en la mayoría de los métodos de DataOutputStream.

Nota :


Summary

Un flujo de salida de datos permite que una aplicación escriba tipos de datos Java primitivos en un flujo de salida de forma portátil. Una aplicación puede luego usar un flujo de entrada de datos para volver a leer los datos. (Traducción automática)

Class diagram

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeByte(0xff);
    os.writeInt(0x12345678);
    os.writeUTF("abcd");
}

final var bytes = out.toByteArray();

// [ff, 12, 34, 56, 78, 00, 04, 61, 62, 63, 64]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    final var b = is.readByte();
    System.out.printf("%x%n", b); // ff

    final var i = is.readInt();
    System.out.printf("%x%n", i); // 12345678

    final var utf = is.readUTF();
    System.out.println(utf); // abcd
}

Fields

protected int written

La cantidad de bytes escritos en el flujo de salida de datos hasta el momento. (Traducción automática)

class MyOutputStream extends DataOutputStream {
    MyOutputStream(OutputStream out) {
        super(out);
    }

    int getWritten() {
        return written;
    }
}

final var out = new ByteArrayOutputStream();
try (final var os = new MyOutputStream(out)) {
    os.writeByte(0x10);
    System.out.println(os.getWritten()); // 1

    os.writeByte(0x20);
    System.out.println(os.getWritten()); // 2

    os.writeInt(0x12345678);
    System.out.println(os.getWritten()); // 6
}

final var bytes = out.toByteArray();

// [10, 20, 12, 34, 56, 78]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

Fields declared in FilterOutputStream

out

Consulte el siguiente enlace.

Constructors

DataOutputStream (OutputStream out)

Crea una nueva secuencia de salida de datos para escribir datos en la secuencia de salida subyacente especificada. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeByte(0x10);
    os.writeByte(0x20);
    os.writeInt(0x12345678);
}

final var bytes = out.toByteArray();

// [10, 20, 12, 34, 56, 78]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

Methods

void flush ()

Limpia este flujo de salida de datos. (Traducción automática)

final var out = new ByteArrayOutputStream();

try (final var os = new DataOutputStream(new BufferedOutputStream(out))) {

    os.write(10);
    System.out.println(Arrays.toString(out.toByteArray())); // []

    os.flush();
    System.out.println(Arrays.toString(out.toByteArray())); // [10]

    os.write(20);
    System.out.println(Arrays.toString(out.toByteArray())); // [10]

    os.flush();
    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20]

    os.write(30);
    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20]
}

System.out.println(Arrays.toString(out.toByteArray())); // [10, 20, 30]

final int size ()

Devuelve el valor actual del contador escrito, la cantidad de bytes escritos en este flujo de salida de datos hasta el momento. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeByte(0x10);
    System.out.println(os.size()); // 1

    os.writeByte(0x20);
    System.out.println(os.size()); // 2

    os.writeInt(0x12345678);
    System.out.println(os.size()); // 6
}

final var bytes = out.toByteArray();

// [10, 20, 12, 34, 56, 78]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

void write (byte[] b, int off, int len)

Escribe len bytes desde la matriz de bytes especificada comenzando en el desplazamiento off hasta el flujo de salida subyacente. (Traducción automática)

final var out = new ByteArrayOutputStream();

try (final var os = new DataOutputStream(out)) {

    final byte[] b = {10, 20, 30, 40, 50};

    os.write(b, 0, 2);
    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20]

    os.write(b, 2, 3);
    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20, 30, 40, 50]
}

void write (int b)

Escribe el byte especificado (los ocho bits inferiores del argumento b) en el flujo de salida subyacente. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.write(10);
    os.write(20);
    os.write(30);
}

System.out.println(Arrays.toString(out.toByteArray())); // [10, 20, 30]

final void writeBoolean (boolean v)

Escribe un valor booleano en el flujo de salida subyacente como un valor de 1 byte. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeBoolean(true);
    os.writeBoolean(false);
}

final var bytes = out.toByteArray();

// [01, 00]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.println(is.readBoolean()); // true
    System.out.println(is.readBoolean()); // false
}

final void writeByte (int v)

Escribe un byte en el flujo de salida subyacente como un valor de 1 byte. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeByte(0x10);
    os.writeByte(0x20);
    os.writeByte(0xff);
}

final var bytes = out.toByteArray();

// [10, 20, ff]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.printf("%x%n", is.readByte()); // 10
    System.out.printf("%x%n", is.readByte()); // 20
    System.out.printf("%x%n", is.readByte()); // ff
}

final void writeBytes (String s)

Escribe la cadena en el flujo de salida subyacente como una secuencia de bytes. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeBytes("abc");
    os.writeBytes("○△×");
}

final var bytes = out.toByteArray();

// [61, 62, 63, cb, b3, d7]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.printf("%x%n", is.readByte()); // 61
    System.out.printf("%x%n", is.readByte()); // 62
    System.out.printf("%x%n", is.readByte()); // 63
    System.out.printf("%x%n", is.readByte()); // cb
    System.out.printf("%x%n", is.readByte()); // b3
    System.out.printf("%x%n", is.readByte()); // d7
}

final void writeChar (int v)

Escribe un carácter en el flujo de salida subyacente como un valor de 2 bytes, el byte alto primero. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeChar('a');
    os.writeChar('b');
    os.writeChar('○');
    os.writeChar('△');
}

final var bytes = out.toByteArray();

// [00, 61, 00, 62, 25, cb, 25, b3]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.println(is.readChar()); // a
    System.out.println(is.readChar()); // b
    System.out.println(is.readChar()); // ○
    System.out.println(is.readChar()); // △
}

final void writeChars (String s)

Escribe una cadena en el flujo de salida subyacente como una secuencia de caracteres. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeChars("abc");
    os.writeChars("○△×");
}

final var bytes = out.toByteArray();

// [00, 61, 00, 62, 00, 63, 25, cb, 25, b3, 00, d7]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.println(is.readChar()); // a
    System.out.println(is.readChar()); // b
    System.out.println(is.readChar()); // c
    System.out.println(is.readChar()); // ○
    System.out.println(is.readChar()); // △
    System.out.println(is.readChar()); // ×
}

final void writeDouble (double v)

Convierte el argumento doble en uno largo utilizando el método doubleToLongBits en la clase Double, y luego escribe ese valor largo en el flujo de salida subyacente como una cantidad de 8 bytes, el byte alto primero. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeDouble(1.23);
    os.writeDouble(-4.56);
}

final var bytes = out.toByteArray();

// [3f, f3, ae, 14, 7a, e1, 47, ae, c0, 12, 3d, 70, a3, d7, 0a, 3d]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.println(is.readDouble()); // 1.23
    System.out.println(is.readDouble()); // -4.56
}

final void writeFloat (float v)

Convierte el argumento float en un int usando el método floatToIntBits en la clase Float, y luego escribe ese valor int en el flujo de salida subyacente como una cantidad de 4 bytes, el byte alto primero. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeFloat(1.23f);
    os.writeFloat(-4.56f);
}

final var bytes = out.toByteArray();

// [3f, 9d, 70, a4, c0, 91, eb, 85]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.println(is.readFloat()); // 1.23
    System.out.println(is.readFloat()); // -4.56
}

final void writeInt (int v)

Escribe un int en el flujo de salida subyacente como cuatro bytes, comenzando por el byte alto. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeInt(0x12345678);
    os.writeInt(0xff);
}

final var bytes = out.toByteArray();

// [12, 34, 56, 78, 00, 00, 00, ff]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.printf("%x%n", is.readInt()); // 12345678
    System.out.printf("%x%n", is.readInt()); // ff
}

final void writeLong (long v)

Escribe un largo en el flujo de salida subyacente como ocho bytes, el byte alto primero. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeLong(0x1234567890abcdefL);
    os.writeLong(0xff);
}

final var bytes = out.toByteArray();

// [12, 34, 56, 78, 90, ab, cd, ef, 00, 00, 00, 00, 00, 00, 00, ff]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.printf("%x%n", is.readLong()); // 1234567890abcdef
    System.out.printf("%x%n", is.readLong()); // ff
}

final void writeShort (int v)

Escribe un corto en el flujo de salida subyacente como dos bytes, el byte alto primero. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeShort(0x1234);
    os.writeShort(0xff);
}

final var bytes = out.toByteArray();

// [12, 34, 00, ff]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.printf("%x%n", is.readShort()); // 1234
    System.out.printf("%x%n", is.readShort()); // ff
}

final void writeUTF (String str)

Escribe una cadena en el flujo de salida subyacente utilizando codificación UTF-8 modificada de manera independiente de la máquina. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeUTF("abc");
    os.writeUTF("○△×");
}

final var bytes = out.toByteArray();

// [00, 03, 61, 62, 63, 00, 08, e2, 97, 8b, e2, 96, b3, c3, 97]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.println(is.readUTF()); // abc
    System.out.println(is.readUTF()); // ○△×
}

Methods declared in FilterOutputStream

close, write

Consulte el siguiente enlace.

Methods declared in OutputStream

nullOutputStream

Consulte el siguiente enlace.

Methods declared in DataOutput

write

Consulte el siguiente enlace.


Related posts

To top of page