Classe Java ObjectOutputStream
Classe Java ObjectOutputStream
Neste tutorial, aprenderemos sobre Java ObjectOutputStream e seus métodos com a ajuda de exemplos.
O ObjectOutputStream
classe do java.io
pacote pode ser usado para escrever objetos que podem ser lidos por ObjectInputStream
.
Ele estende o OutputStream
classe abstrata.
Trabalho de ObjectOutputStream
Basicamente, o
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 podem ser transferidos entre redes.
Observação :O
ObjectOutputStream
classe só escreve aqueles objetos que implementam o Serializable
interface. Isso ocorre porque os objetos precisam ser serializados durante a gravação no fluxo Criar um ObjectOutputStream
Para criar um fluxo de saída de objeto, devemos importar o
java.io.ObjectOutputStream
pacote primeiro. Depois de importar o pacote, veja 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 chamado objStream que está vinculado ao fluxo de saída do arquivo chamado fileStream .
Métodos de ObjectOutputStream
O
ObjectOutputStream
classe fornece implementações para diferentes métodos presentes no OutputStream
classe. Método write()
write()
- grava um byte de dados no fluxo de saídawriteBoolean()
- escreve dados em formato booleanowriteChar()
- escreve dados em forma de caracterewriteInt()
- escreve dados em formato inteirowriteObject()
- escreve 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
para 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();
}
}
}
Saída
Integer data: 5 String data: This is programiz
No exemplo acima, usamos o
readInt()
método e readObject()
método para ler dados inteiros e dados de objetos 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();
}
}
}
Saída
Dog Name: Tyson Dog Breed: Labrador
No exemplo acima, criamos
ObjectOutputStream
chamado objOut usando oFileOutputStream
chamado fileOutObjectInputStream
chamado objIn usando oFileInputStream
chamado fileIn .- Um objeto cão1 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 objetos que podem ser serializados no 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 armazenados 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).
Java