Neste tutorial, aprenderemos sobre ObjectOutputStream Java e seus métodos com a ajuda de exemplos.
A ObjectInputStream
classe do java.io
pacote pode ser usada para ler objetos que foram escritos anteriormente por ObjectOutputStream
.
Ele estende a InputStream
classe abstrata.
Antes de aprender sobre a ObjectInputStream
classe, certifique-se de saber sobre a classe ObjectOutputStream.
Trabalho de ObjectInputStream
O ObjectInputStream
é usado principalmente para ler dados gravados pelo ObjectOutputStream
.
Basicamente, o ObjectOutputStream
converte objetos Java em fluxos correspondentes. Isso é conhecido como serialização. Esses fluxos convertidos podem ser armazenados em arquivos ou transferidos por meio de redes.
Agora, se precisarmos ler esses objetos, usaremos o ObjectInputStream
que converterá os fluxos de volta aos objetos correspondentes. Isso é conhecido como desserialização.
Crie um ObjectInputStream
Para criar um fluxo de entrada de objeto, devemos importar o java.io.ObjectInputStream
pacote primeiro. Depois de importar o pacote, aqui está como podemos criar um fluxo de entrada.
// Creates a file input stream linked with the specified file FileInputStream fileStream = new FileInputStream(String file); // Creates an object input stream using the file input stream ObjectInputStream objStream = new ObjectInputStream(fileStream);
No exemplo acima, criamos um fluxo de entrada de objeto denominado objStream que está vinculado ao fluxo de entrada de arquivo denominado fileStream.
Agora, o objStream
pode ser usado para ler objetos do arquivo.
Métodos de ObjectInputStream
A ObjectInputStream
classe fornece implementações de diferentes métodos presentes na InputStream
classe.
Método read ()
read()
- lê um byte de dados do fluxo de entradareadBoolean()
- lê dados em formato booleanoreadChar()
- lê os dados em forma de caracterereadInt()
- lê dados em formato inteiroreadObject()
- lê o objeto do fluxo de entrada
Exemplo 1: Java ObjectInputStream
Vamos ver como podemos usar a ObjectInputStream
classe para ler objetos escritos pela ObjectOutputStream
classe.
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"); ObjectOutputStream output = new ObjectOutputStream(file); // Writing to the file using ObjectOutputStream output.writeInt(data1); output.writeObject(data2); FileInputStream fileStream = new FileInputStream("file.txt"); // Creating an object input stream ObjectInputStream objStream = new ObjectInputStream(fileStream); //Using the readInt() method System.out.println("Integer data :" + objStream.readInt()); // Using the readObject() method 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 método readInt()
e readObject()
para ler dados inteiros e dados de objeto do arquivo.
Aqui, usamos o ObjectOutputStream
para gravar dados no arquivo. Em seguida, lemos os dados do arquivo usando o ObjectInputStream
.
Exemplo 2: Java ObjectInputStream
Vamos ver outro exemplo prático,
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 dog = new Dog("Tyson", "Labrador"); try ( FileOutputStream file = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // Writes objects to the output stream output.writeObject(dog); FileInputStream fileStream = new FileInputStream("file.txt"); // Creates an ObjectInputStream ObjectInputStream input = new ObjectInputStream(fileStream); // Reads the objects Dog newDog = (Dog) input.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); output.close(); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Resultado
Nome do Cachorro: Tyson Raça de Cachorro: Labrador
No exemplo acima, criamos
ObjectOutputStream
saída nomeada usando oFileOutputStream
arquivo nomeadoObjectInputStream
entrada nomeada usando oFileInputStream
fileStream nomeado- Um cão objeto 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 o ObjectOutputStream
único grava os objetos serializáveis no fluxo de saída.
Outros métodos de ObjectInputStream
Métodos | Descrições |
---|---|
available() | retorna o número disponível de bytes no fluxo de entrada |
mark() | marca a posição no fluxo de entrada até a qual os dados foram lidos |
reset() | retorna o controle para o ponto no fluxo de entrada onde a marca foi definida |
skipBytes() | pula e descarta os bytes especificados do fluxo de entrada |
close() | fecha o fluxo de entrada do objeto |
Para saber mais, visite Java ObjectInputStream (documentação oficial do Java).