Neste tutorial, aprenderemos sobre ObjectOutputStream Java e seus métodos com a ajuda de exemplos.
A ObjectOutputStream
classe do java.io
pacote pode ser usada para escrever objetos que podem ser lidos por ObjectInputStream
.
Ele estende a OutputStream
classe abstrata.
Trabalho de ObjectOutputStream
Basicamente, ele ObjectOutputStream
codifica objetos Java usando o nome da classe e os valores do objeto. E, portanto, gera fluxos correspondentes. Esse processo é conhecido como serialização.
Esses fluxos convertidos podem ser armazenados em arquivos e transferidos entre redes.
Observação : a ObjectOutputStream
classe grava apenas os objetos que implementam a Serializable
interface. Isso ocorre porque os objetos precisam ser serializados durante a gravação no fluxo
Crie um ObjectOutputStream
Para criar um fluxo de saída de objeto, devemos importar o java.io.ObjectOutputStream
pacote primeiro. Depois de importar o pacote, aqui está como podemos criar um fluxo de saída.
// Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream);
No exemplo acima, criamos um fluxo de saída de objeto denominado objStream que está vinculado ao fluxo de saída de arquivo denominado fileStream.
Métodos de ObjectOutputStream
A ObjectOutputStream
classe fornece implementações para diferentes métodos presentes na OutputStream
classe.
Método write ()
write()
- grava um byte de dados no fluxo de saídawriteBoolean()
- escreve dados em formato booleanowriteChar()
- grava dados em forma de caracterewriteInt()
- grava dados em formato inteirowriteObject()
- grava o objeto no fluxo de saída
Exemplo 1: Java ObjectOutputStream
Vamos ver como podemos usar ObjectOutputStream
para armazenar objetos em um arquivo e ObjectInputStream
ler esses objetos dos arquivos
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 = "This is programiz"; try ( FileOutputStream file = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // writes objects to output stream output.writeInt(data1); output.writeObject(data2); // Reads data using the 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
Dados inteiros: 5 dados String: Isto é programiz
No exemplo acima, usamos o readInt()
método e o readObject()
método para ler dados inteiros e dados do objeto dos arquivos.
Aqui, usamos o ObjectOutputStream
para gravar dados no arquivo. Em seguida, lemos os dados do arquivo usando o ObjectInputStream
.
Exemplo 2: Java ObjectOutputStream
Vamos dar outro exemplo,
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) ( // Creates an object of Dog class Dog dog1 = new Dog("Tyson", "Labrador"); try ( FileOutputStream fileOut = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream objOut = new ObjectOutputStream(fileOut); // Writes objects to the output stream objOut.writeObject(dog1); // Reads the object FileInputStream fileIn = new FileInputStream("file.txt"); ObjectInputStream objIn = new ObjectInputStream(fileIn); // Reads the objects Dog newDog = (Dog) objIn.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); objOut.close(); objIn.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Resultado
Nome do Cachorro: Tyson Raça de Cachorro: Labrador
No exemplo acima, criamos
ObjectOutputStream
nomeado objOut usando oFileOutputStream
nome fileOutObjectInputStream
nomeado objIn usando oFileInputStream
nomeado fileIn.- Um objeto dog1 da classe Dog.
Aqui, usamos o fluxo de saída do objeto para gravar o objeto no arquivo. E, o fluxo de entrada do objeto para ler o objeto do arquivo.
Nota : A classe Dog implementa a Serializable
interface. É porque os ObjectOutputStream
únicos objetos de gravação que podem ser serializados para o fluxo de saída.
Outros métodos de ObjectOutputStream
Métodos | Descrições |
---|---|
flush() | limpa todos os dados do fluxo de saída |
drain() | coloca todos os dados em buffer no fluxo de saída |
close() | fecha o fluxo de saída |
Para saber mais, visite Java ObjectOutputStream (documentação oficial do Java).