Classe Java ObjectInputStream
Classe Java ObjectInputStream
Neste tutorial, aprenderemos sobre Java ObjectOutputStream e seus métodos com a ajuda de exemplos.
O ObjectInputStream
classe do java.io
pacote pode ser usado para ler objetos que foram escritos anteriormente por ObjectOutputStream
.
Ele estende o InputStream
classe abstrata.
Antes de aprender sobre o ObjectInputStream
class, certifique-se de conhecer a classe ObjectOutputStream.
Trabalho de ObjectInputStream
O
ObjectInputStream
é usado principalmente para ler dados escritos 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 em objetos correspondentes. Isso é conhecido como desserialização. Criar 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 chamado objStream que está vinculado ao fluxo de entrada de arquivo chamado fileStream .
Agora, o
objStream
pode ser usado para ler objetos do arquivo. Métodos de ObjectInputStream
O
ObjectInputStream
classe fornece implementações de diferentes métodos presentes no InputStream
classe. Método read()
read()
- lê um byte de dados do fluxo de entradareadBoolean()
- lê dados em formato booleanoreadChar()
- lê 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 o
ObjectInputStream
classe para ler objetos escritos pelo 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();
}
}
}
Saída
Integer data: 5 String data: This is programiz
No exemplo acima, usamos o
readInt()
e readObject()
método para ler dados inteiros e dados de objetos 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();
}
}
}
Saída
Dog Name: Tyson Dog Breed: Labrador
No exemplo acima, criamos
ObjectOutputStream
chamado saída usando oFileOutputStream
chamado arquivoObjectInputStream
chamado entrada usando oFileInputStream
chamado fileStream- Um objeto cachorro do Cão aula
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.
Observação :O Cão classe implementa o
Serializable
interface. É porque o ObjectOutputStream
grava apenas 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 ao ponto no fluxo de entrada onde a marca foi definida |
skipBytes() | ignora 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).
Java