Java : DataOutput con ejemplos

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

Nota :


Summary

La interfaz DataOutput permite convertir datos de cualquiera de los tipos primitivos de Java en una serie de bytes y escribir estos bytes en un flujo binario. También existe una función para convertir una cadena en formato UTF-8 modificado y escribir la serie de bytes resultante. (Traducción automática)

Class diagram

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeByte(0xff);
    target.writeInt(0x12345678);
    target.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) + "]");

Methods

void write (byte[] b)

Escribe en el flujo de salida todos los bytes de la matriz b. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    final byte[] b1 = {10, 20};

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

    final byte[] b2 = {30, 40, 50};

    target.write(b2);
    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20, 30, 40, 50]
}

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

Escribe len bytes de la matriz b, en orden, en el flujo de salida. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

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

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

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

void write (int b)

Escribe en el flujo de salida los ocho bits de orden inferior del argumento b. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.write(10);
    target.write(20);
    target.write(30);
}

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

void writeBoolean (boolean v)

Escribe un valor booleano en este flujo de salida. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeBoolean(true);
    target.writeBoolean(false);
}

final var bytes = out.toByteArray();

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

void writeByte (int v)

Escribe en el flujo de salida los ocho bits de orden inferior del argumento v. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeByte(0x10);
    target.writeByte(0x20);
    target.writeByte(0xff);
}

final var bytes = out.toByteArray();

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

void writeBytes (String s)

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

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeBytes("abc");
    target.writeBytes("○△×");
}

final var bytes = out.toByteArray();

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

void writeChar (int v)

Escribe un valor de carácter, que consta de dos bytes, en el flujo de salida. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeChar('a');
    target.writeChar('b');
    target.writeChar('○');
    target.writeChar('△');
}

final var bytes = out.toByteArray();

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

void writeChars (String s)

Escribe cada carácter de la cadena s, en el flujo de salida, en orden, dos bytes por carácter. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeChars("abc");
    target.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) + "]");

void writeDouble (double v)

Escribe un valor doble, que consta de ocho bytes, en el flujo de salida. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeDouble(1.23);
    target.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) + "]");

void writeFloat (float v)

Escribe un valor flotante, que consta de cuatro bytes, en el flujo de salida. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeFloat(1.23f);
    target.writeFloat(-4.56f);
}

final var bytes = out.toByteArray();

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

void writeInt (int v)

Escribe un valor int, que consta de cuatro bytes, en el flujo de salida. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeInt(0x12345678);
    target.writeInt(0xff);
}

final var bytes = out.toByteArray();

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

void writeLong (long v)

Escribe un valor largo, compuesto de ocho bytes, en el flujo de salida. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeLong(0x1234567890abcdefL);
    target.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) + "]");

void writeShort (int v)

Escribe dos bytes en el flujo de salida para representar el valor del argumento. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeShort(0x1234);
    target.writeShort(0xff);
}

final var bytes = out.toByteArray();

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

void writeUTF (String s)

Escribe dos bytes de información de longitud en el flujo de salida, seguido de la representación UTF-8 modificada de cada carácter en la cadena s. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    final DataOutput target = os;

    target.writeUTF("abc");
    target.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) + "]");

Related posts

To top of page