Java ObjectOutputStream (com exemplos)

Neste tutorial, aprenderemos sobre ObjectOutputStream Java e seus métodos com a ajuda de exemplos.

A ObjectOutputStreamclasse do java.iopacote pode ser usada para escrever objetos que podem ser lidos por ObjectInputStream.

Ele estende a OutputStreamclasse abstrata.

Trabalho de ObjectOutputStream

Basicamente, ele ObjectOutputStreamcodifica 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 ObjectOutputStreamclasse grava apenas os objetos que implementam a Serializableinterface. 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.ObjectOutputStreampacote 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 ObjectOutputStreamclasse fornece implementações para diferentes métodos presentes na OutputStreamclasse.

Método write ()

  • write() - grava um byte de dados no fluxo de saída
  • writeBoolean() - escreve dados em formato booleano
  • writeChar() - grava dados em forma de caractere
  • writeInt() - grava dados em formato inteiro
  • writeObject() - grava o objeto no fluxo de saída

Exemplo 1: Java ObjectOutputStream

Vamos ver como podemos usar ObjectOutputStreampara armazenar objetos em um arquivo e ObjectInputStreamler 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 ObjectOutputStreampara 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

  • ObjectOutputStreamnomeado objOut usando o FileOutputStreamnome fileOut
  • ObjectInputStreamnomeado objIn usando o FileInputStreamnomeado 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 Serializableinterface. É 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).

Artigos interessantes...