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 :
- 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 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)
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
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
Methods declared in OutputStream
Methods declared in DataOutput
Related posts
- Ejemplos de API