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 :
- Este artículo puede utilizar software de traducción para su comodidad. Consulte también la versión original en inglés.
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)
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
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
- Ejemplos de API