În acest tutorial, vom afla despre Java ObjectOutputStream și metodele sale cu ajutorul unor exemple.
ObjectOutputStream
Clasa a java.io
pachetului poate fi folosit pentru a scrie obiecte care pot fi citite de ObjectInputStream
.
Extinde OutputStream
clasa abstractă.
Funcționarea ObjectOutputStream
Practic, ObjectOutputStream
codifică obiecte Java folosind numele clasei și valorile obiectului. Și, prin urmare, generează fluxuri corespunzătoare. Acest proces este cunoscut sub numele de serializare.
Aceste fluxuri convertite pot fi stocate în fișiere și pot fi transferate între rețele.
Notă : ObjectOutputStream
Clasa scrie numai acele obiecte care implementează Serializable
interfața. Acest lucru se datorează faptului că obiectele trebuie serializate în timp ce scrieți în flux
Creați un ObjectOutputStream
Pentru a crea un flux de ieșire obiect, trebuie să importăm mai java.io.ObjectOutputStream
întâi pachetul. Odată ce am importat pachetul, iată cum putem crea un flux de ieșire.
// Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream);
În exemplul de mai sus, am creat un flux de ieșire obiect numit objStream care este legat de fluxul de ieșire a fișierului numit fileStream.
Metode de ObjectOutputStream
ObjectOutputStream
Clasa oferă implementări pentru diferite metode prezintă în OutputStream
clasă.
write () Metoda
write()
- scrie un octet de date în fluxul de ieșirewriteBoolean()
- scrie date în formă booleanăwriteChar()
- scrie date sub formă de caracterewriteInt()
- scrie date sub formă de număr întregwriteObject()
- scrie obiect în fluxul de ieșire
Exemplul 1: Java ObjectOutputStream
Să vedem cum putem folosi ObjectOutputStream
pentru a stoca obiecte într-un fișier și ObjectInputStream
pentru a citi acele obiecte din fișiere
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(); ) ) )
Ieșire
Date întregi: 5 șiruri de date: Acesta este programat
În exemplul de mai sus, am folosit readInt()
metoda și readObject()
metoda pentru a citi date întregi și date obiect din fișiere.
Aici, am folosit ObjectOutputStream
pentru a scrie date în fișier. Apoi citim datele din fișier folosind ObjectInputStream
.
Exemplul 2: Java ObjectOutputStream
Să luăm un alt exemplu,
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(); ) ) )
Ieșire
Numele câinelui: Rasa de câine Tyson: Labrador
În exemplul de mai sus, am creat
ObjectOutputStream
denumit objOut folosindFileOutputStream
fișierul denumitObjectInputStream
denumit objIn folosindFileInputStream
fișierul numit.- Un câine obiect1 din clasa Câine.
Aici, am folosit apoi fluxul de ieșire al obiectului pentru a scrie obiectul în fișier. Și, fluxul de intrare a obiectului pentru a citi obiectul din fișier.
Notă : Clasa Dog implementează Serializable
interfața. Acest lucru se datorează faptului că ObjectOutputStream
singurele obiecte de scris care pot fi serializate pe fluxul de ieșire.
Alte metode ale ObjectOutputStream
Metode | Descrieri |
---|---|
flush() | șterge toate datele din fluxul de ieșire |
drain() | introduce toate datele tamponate în fluxul de ieșire |
close() | închide fluxul de ieșire |
Pentru a afla mai multe, vizitați Java ObjectOutputStream (documentație oficială Java).