Java : DataInputStream con ejemplos

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

Nota :


Summary

Un flujo de entrada de datos permite que una aplicación lea tipos de datos Java primitivos desde un flujo de entrada subyacente de una manera independiente de la máquina. Una aplicación utiliza un flujo de salida de datos para escribir datos que luego pueden leerse mediante un flujo de entrada de 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 declared in FilterInputStream

in

Consulte el siguiente enlace.

Constructors

DataInputStream (InputStream in)

Crea un DataInputStream que utiliza el InputStream subyacente especificado. (Traducción automática)

final byte[] buf = {0x10, 0x20, 0x30};

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

    final var s = is.readShort();
    System.out.printf("%x%n", s); // 2030
}

Methods

final int read (byte[] b)

Lee una cierta cantidad de bytes del flujo de entrada contenido y los almacena en la matriz de búfer b. (Traducción automática)

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

try (final var is = new DataInputStream(new ByteArrayInputStream(buf))) {
    final var b1 = new byte[3];

    System.out.println(is.read(b1)); // 3
    System.out.println(Arrays.toString(b1)); // [10, 20, 30]

    final var b2 = new byte[3];

    System.out.println(is.read(b2)); // 2
    System.out.println(Arrays.toString(b2)); // [40, 50, 0]

    final var b3 = new byte[3];

    System.out.println(is.read(b3)); // -1
    System.out.println(Arrays.toString(b3)); // [0, 0, 0]
}

final int read (byte[] b, int off, int len)

Lee hasta len bytes de datos del flujo de entrada contenido en una matriz de bytes. (Traducción automática)

final byte[] buf = {10, 20, 30};

try (final var is = new DataInputStream(new ByteArrayInputStream(buf))) {
    final var b1 = new byte[3];

    System.out.println(is.read(b1, 0, 1)); // 1
    System.out.println(Arrays.toString(b1)); // [10, 0, 0]

    final var b2 = new byte[3];

    System.out.println(is.read(b2, 0, 2)); // 2
    System.out.println(Arrays.toString(b2)); // [20, 30, 0]

    final var b3 = new byte[3];

    System.out.println(is.read(b3, 0, 3)); // -1
    System.out.println(Arrays.toString(b3)); // [0, 0, 0]
}

try (final var is = new DataInputStream(new ByteArrayInputStream(buf))) {
    final var b1 = new byte[3];

    System.out.println(is.read(b1, 2, 1)); // 1
    System.out.println(Arrays.toString(b1)); // [0, 0, 10]

    final var b2 = new byte[3];

    System.out.println(is.read(b2, 1, 2)); // 2
    System.out.println(Arrays.toString(b2)); // [0, 20, 30]

    final var b3 = new byte[3];

    System.out.println(is.read(b3, 0, 3)); // -1
    System.out.println(Arrays.toString(b3)); // [0, 0, 0]
}

final boolean readBoolean ()

Consulte el contrato general del método readBoolean de DataInput. (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 byte readByte ()

Consulte el contrato general del método readByte de DataInput. (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 char readChar ()

Consulte el contrato general del método readChar de DataInput. (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 double readDouble ()

Consulte el contrato general del método readDouble de DataInput. (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 float readFloat ()

Consulte el contrato general del método readFloat de DataInput. (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 readFully (byte[] b)

Consulte el contrato general del método readFully de DataInput. (Traducción automática)

final byte[] buf = {10, 20, 30, 40, 50, 60, 70};

try (final var is = new DataInputStream(new ByteArrayInputStream(buf))) {
    final var b1 = new byte[3];

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

    final var b2 = new byte[3];

    is.readFully(b2);
    System.out.println(Arrays.toString(b2)); // [40, 50, 60]

    try {
        final var b3 = new byte[3];
        is.readFully(b3);
    } catch (EOFException e) {
        System.out.println("EOFException!");
    }

    // Result
    // ↓
    //EOFException!
}

final void readFully (byte[] b, int off, int len)

Consulte el contrato general del método readFully de DataInput. (Traducción automática)

Please see also : readFully(byte[] b)

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

try (final var is = new DataInputStream(new ByteArrayInputStream(buf))) {
    final var b1 = new byte[3];

    is.readFully(b1, 0, 1);
    System.out.println(Arrays.toString(b1)); // [10, 0, 0]

    final var b2 = new byte[3];

    is.readFully(b2, 0, 2);
    System.out.println(Arrays.toString(b2)); // [20, 30, 0]

    final var b3 = new byte[3];

    is.readFully(b3, 0, 3);
    System.out.println(Arrays.toString(b3)); // [40, 50, 60]
}

try (final var is = new DataInputStream(new ByteArrayInputStream(buf))) {
    final var b1 = new byte[4];

    is.readFully(b1, 0, 2);
    System.out.println(Arrays.toString(b1)); // [10, 20, 0, 0]

    final var b2 = new byte[4];

    is.readFully(b2, 1, 2);
    System.out.println(Arrays.toString(b2)); // [0, 30, 40, 0]

    final var b3 = new byte[4];

    is.readFully(b3, 2, 2);
    System.out.println(Arrays.toString(b3)); // [0, 0, 50, 60]
}

final int readInt ()

Consulte el contrato general del método readInt de DataInput. (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 String readLine ()

Obsoleto. Este método no convierte correctamente los bytes en caracteres. (Traducción automática)

Deprecated.

final long readLong ()

Consulte el contrato general del método readLong de DataInput. (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 short readShort ()

Consulte el contrato general del método readShort de DataInput. (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 int readUnsignedByte ()

Consulte el contrato general del método readUnsignedByte de DataInput. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeByte(10);
    os.writeByte(20);
    os.writeByte(-1);
}

final var bytes = out.toByteArray();

// [0a, 14, ff]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.println(is.readByte()); // 10
    System.out.println(is.readByte()); // 20
    System.out.println(is.readByte()); // -1
}

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.println(is.readUnsignedByte()); // 10
    System.out.println(is.readUnsignedByte()); // 20
    System.out.println(is.readUnsignedByte()); // 255
}

final int readUnsignedShort ()

Consulte el contrato general del método readUnsignedShort de DataInput. (Traducción automática)

final var out = new ByteArrayOutputStream();
try (final var os = new DataOutputStream(out)) {
    os.writeShort(10);
    os.writeShort(20);
    os.writeShort(-1);
}

final var bytes = out.toByteArray();

// [00, 0a, 00, 14, ff, ff]
System.out.println("[" + HexFormat.ofDelimiter(", ").formatHex(bytes) + "]");

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.println(is.readShort()); // 10
    System.out.println(is.readShort()); // 20
    System.out.println(is.readShort()); // -1
}

try (final var is = new DataInputStream(new ByteArrayInputStream(bytes))) {
    System.out.println(is.readUnsignedShort()); // 10
    System.out.println(is.readUnsignedShort()); // 20
    System.out.println(is.readUnsignedShort()); // 65535
}

final String readUTF ()

Consulte el contrato general del método readUTF de DataInput. (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()); // ○△×
}

static final String readUTF (DataInput in)

Lee desde la secuencia una representación de una cadena de caracteres Unicode codificada en formato UTF-8 modificado; esta cadena de caracteres luego se devuelve como una cadena. (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(DataInputStream.readUTF(is)); // abc
    System.out.println(DataInputStream.readUTF(is)); // ○△×
}

final int skipBytes (int n)

Consulte el contrato general del método skipBytes de DataInput. (Traducción automática)

final byte[] buf = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};

try (final var is = new DataInputStream(new ByteArrayInputStream(buf))) {
    System.out.println(is.readByte()); // 10

    System.out.println(is.skipBytes(1)); // 1
    System.out.println(is.readByte()); // 30

    System.out.println(is.skipBytes(2)); // 2
    System.out.println(is.readByte()); // 60

    System.out.println(is.skipBytes(3)); // 3
    System.out.println(is.readByte()); // 100

    System.out.println(is.skipBytes(1)); // 0
}

Methods declared in FilterInputStream

available, close, mark, markSupported, read, reset, skip

Consulte el siguiente enlace.

Methods declared in InputStream

nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo

Consulte el siguiente enlace.


Related posts

To top of page