Java ObjectOutputStream (cu exemple)

În acest tutorial, vom afla despre Java ObjectOutputStream și metodele sale cu ajutorul unor exemple.

ObjectOutputStreamClasa a java.iopachetului poate fi folosit pentru a scrie obiecte care pot fi citite de ObjectInputStream.

Extinde OutputStreamclasa abstractă.

Funcționarea ObjectOutputStream

Practic, ObjectOutputStreamcodifică 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ă : ObjectOutputStreamClasa scrie numai acele obiecte care implementează Serializableinterfaț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

ObjectOutputStreamClasa oferă implementări pentru diferite metode prezintă în OutputStreamclasă.

write () Metoda

  • write() - scrie un octet de date în fluxul de ieșire
  • writeBoolean() - scrie date în formă booleană
  • writeChar() - scrie date sub formă de caractere
  • writeInt() - scrie date sub formă de număr întreg
  • writeObject() - scrie obiect în fluxul de ieșire

Exemplul 1: Java ObjectOutputStream

Să vedem cum putem folosi ObjectOutputStreampentru a stoca obiecte într-un fișier și ObjectInputStreampentru 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 ObjectOutputStreampentru 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

  • ObjectOutputStreamdenumit objOut folosind FileOutputStreamfișierul denumit
  • ObjectInputStreamdenumit objIn folosind FileInputStreamfiș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ă Serializableinterfața. Acest lucru se datorează faptului că ObjectOutputStreamsingurele 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).

Articole interesante...