English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Manejo de excepciones en Java

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java ObjectOutputStream 类

在本教程中,我们将借助示例学习Java ObjectOutputStream及其方法。

java.io包的ObjectOutputStream类可用于编写可由ObjectInputStream读取的对象。

它继承了OutputStream抽象类。

ObjectOutputStream的工作原理

基本上,ObjectOutputStream使用类名和对象值对Java对象进行编码。 并且,因此生成相应的流。 此过程称为序列化。

这些转换后的流可以存储在文件中,并且可以在网络之间传输。

Atención:ObjectOutputStream类仅写入那些实现Serializable接口的对象。 这是因为对象在写入流时需要序列化。

Crear un ObjectOutputStream

为了创建对象输出流,我们必须首先导入java.io.ObjectOutputStream包。导入包后,就可以创建输出流。

//创建一个FileOutputStream,其中写入ObjectOutputStream中的对象
FileOutputStream fileStream = new FileOutputStream(String file);
//创建ObjectOutputStream
ObjectOutputStream objStream = new ObjectOutputStream(fileStream);

En el ejemplo anterior, creamos un flujo de salida de objetos llamado objStream, que está vinculado al flujo de salida de archivo llamado fileStream.

Métodos de ObjectOutputStream

La clase ObjectOutputStream proporciona implementaciones para diferentes métodos que aparecen en la clase OutputStream.

Método write()

  • write() - Escribir datos de bytes en el flujo de salida

  • writeBoolean() - Escribir datos en forma de booleano

  • writeChar() - Escribir datos en forma de caracteres

  • writeInt() - Escribir datos en forma de entero

  • writeObject() - Escribir objeto en el flujo de salida

Ejemplo1:Java ObjectOutputStream

Vamos a ver cómo usar ObjectOutputStream para almacenar objetos en un archivo y cómo leer estos objetos desde el archivo usando ObjectInputStream

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
class Main {
    public static void main(String[] args) {
        int data1 = 5;
        String data2 = "Esto es w3codebox";
        try {
            FileOutputStream file = new FileOutputStream("file.txt");
            //Crear un ObjectOutputStream
            ObjectOutputStream output = new ObjectOutputStream(file);
            //Escribir objeto en el flujo de salida
            output.writeInt(data1);
            output.writeObject(data2);
            //Leer datos usando ObjectInputStream
            FileInputStream fileStream = new FileInputStream("file.txt");
            ObjectInputStream objStream = new ObjectInputStream(fileStream);
            System.out.println("Integer data :" + objStream.readInt());
            System.out.println("String data: " + objStream.readObject());
            output.close();
            objStream.close();
        }
        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

Resultado de salida

Integer data: 5
String data: Esto es w3codebox

En el ejemplo anterior, utilizamos los métodos readInt() y readObject() para leer datos enteros y datos de objetos desde el archivo.

Aquí, usamos ObjectOutputStream para escribir datos en el archivo. Luego usamos ObjectInputStream para leer datos del archivo.

Ejemplo2:Java ObjectOutputStream

Vamos a dar otro ejemplo

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Dog implements Serializable {
    String name;
    String breed;
    public Dog(String name, String breed) {
        this.name = name;
        this.breed = breed;
    }
}
class Main {
    public static void main(String[] args) {
        //Crear un objeto de la clase Dog
        Dog dog1 = new Dog("泰里", "拉布拉多猎犬");
        try {
            FileOutputStream fileOut = new FileOutputStream("file.txt");
            //Crear un ObjectOutputStream
            ObjectOutputStream objOut = new ObjectOutputStream(fileOut);
            //Escribir objeto en el flujo de salida
            objOut.writeObject(dog1);
            //Lectura de objeto
            FileInputStream fileIn = new FileInputStream("file.txt");
            ObjectInputStream objIn = new ObjectInputStream(fileIn);
            // Lectura de objeto
            Dog newDog = (Dog) objIn.readObject();
            System.out.println("Nombre del perro: "); + newDog.name);
            System.out.println("Raza de perro: "); + newDog.breed);
            objOut.close();
            objIn.close();
        }
        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

Resultado de salida

Nombre del perro: Terry
Raza: Labrador retriever

En el ejemplo anterior, creamos

  •  El ObjectOutputStream llamado objOut utiliza el FileOutputStrea llamado fileOut.

  •  El ObjectInputStream llamado objIn utiliza el FileInputStream llamado fileIn.

  • El objeto de la clase Dog dog1.

Aquí, luego utilizamos el flujo de salida de objetos para escribir objetos en el archivo. Y, el flujo de entrada de objetos lee objetos del archivo.

Atención:Dog clase implementa la interfaz Serializable. Esto es porque ObjectOutputStream solo puede escribir objetos que se pueden serializar en el flujo de salida.

Otros métodos de ObjectOutputStream

MétodoDescripción del contenido
flush()Limpiar todos los datos en el flujo de salida
drain()Poner todos los datos en缓冲区 en el flujo de salida
close()Cerrar el flujo de salida