Java ObjectOutputStream (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθουμε για το Java ObjectOutputStream και τις μεθόδους του με τη βοήθεια παραδειγμάτων.

Η ObjectOutputStreamκλάση του java.ioπακέτου μπορεί να χρησιμοποιηθεί για την εγγραφή αντικειμένων που μπορούν να διαβαστούν ObjectInputStream.

Επεκτείνει την OutputStreamαφηρημένη τάξη.

Εργασία του ObjectOutputStream

Βασικά, ObjectOutputStreamκωδικοποιεί αντικείμενα Java χρησιμοποιώντας το όνομα κλάσης και τις τιμές αντικειμένου. Και, ως εκ τούτου, δημιουργεί αντίστοιχες ροές. Αυτή η διαδικασία είναι γνωστή ως σειριοποίηση.

Αυτές οι μετατρεπόμενες ροές μπορούν να αποθηκευτούν σε αρχεία και να μεταφερθούν μεταξύ δικτύων.

Σημείωση : Η ObjectOutputStreamτάξη γράφει μόνο τα αντικείμενα που εφαρμόζουν τη Serializableδιεπαφή. Αυτό συμβαίνει επειδή τα αντικείμενα πρέπει να σειριοποιηθούν κατά την εγγραφή στη ροή

Δημιουργήστε ένα ObjectOutputStream

Για να δημιουργήσουμε μια ροή εξόδου αντικειμένου, πρέπει java.io.ObjectOutputStreamπρώτα να εισαγάγουμε το πακέτο. Μόλις εισαγάγουμε το πακέτο, εδώ είναι πώς μπορούμε να δημιουργήσουμε μια ροή εξόδου.

 // Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream); 

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει μια ροή εξόδου αντικειμένου που ονομάζεται objStream που συνδέεται με τη ροή εξόδου αρχείων με το όνομα FileStream

Μέθοδοι του ObjectOutputStream

Η ObjectOutputStreamτάξη παρέχει υλοποιήσεις για διαφορετικές μεθόδους που υπάρχουν στην OutputStreamτάξη.

μέθοδος ()

  • write() - γράφει ένα byte δεδομένων στη ροή εξόδου
  • writeBoolean() - γράφει δεδομένα σε δυαδική μορφή
  • writeChar() - γράφει δεδομένα σε μορφή χαρακτήρα
  • writeInt() - γράφει δεδομένα σε ακέραια μορφή
  • writeObject() - γράφει αντικείμενο στη ροή εξόδου

Παράδειγμα 1: Java ObjectOutputStream

Ας δούμε πώς μπορούμε να χρησιμοποιήσουμε ObjectOutputStreamγια την αποθήκευση αντικειμένων σε ένα αρχείο και ObjectInputStreamγια την ανάγνωση αυτών των αντικειμένων από τα αρχεία

 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(); ) ) ) 

Παραγωγή

 Ακέραια δεδομένα: 5 δεδομένα συμβολοσειράς: Πρόκειται για προγραμματισμό 

Στο παραπάνω παράδειγμα, χρησιμοποιήσαμε τη readInt()μέθοδο και τη readObject()μέθοδο για να διαβάσουμε ακέραια δεδομένα και δεδομένα αντικειμένων από τα αρχεία.

Εδώ, χρησιμοποιήσαμε το ObjectOutputStreamγια να γράψουμε δεδομένα στο αρχείο. Στη συνέχεια, διαβάσαμε τα δεδομένα από το αρχείο χρησιμοποιώντας το ObjectInputStream.

Παράδειγμα 2: Java ObjectOutputStream

Ας πάρουμε ένα άλλο παράδειγμα,

 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(); ) ) ) 

Παραγωγή

 Όνομα σκύλου: Tyson Dog φυλή: Λαμπραντόρ 

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει

  • ObjectOutputStreamονομάστηκε objOut χρησιμοποιώντας το FileOutputStreamόνομα fileOut
  • ObjectInputStreamονομάζεται objIn χρησιμοποιώντας το FileInputStreamόνομα fileIn.
  • Ένα αντικείμενο dog1 της κατηγορίας Dog.

Εδώ, στη συνέχεια χρησιμοποιήσαμε τη ροή εξόδου αντικειμένου για να γράψουμε το αντικείμενο στο αρχείο. Και, η ροή εισόδου αντικειμένου για να διαβάσετε το αντικείμενο από το αρχείο.

Σημείωση : Η κατηγορία Dog εφαρμόζει τη Serializableδιεπαφή. Είναι επειδή το ObjectOutputStreamμόνο γράφει αντικείμενα που μπορούν να σειριοποιηθούν στη ροή εξόδου.

Άλλες μέθοδοι ObjectOutputStream

Μέθοδοι Περιγραφές
flush() διαγράφει όλα τα δεδομένα από τη ροή εξόδου
drain() βάζει όλα τα αποθηκευμένα δεδομένα στη ροή εξόδου
close() κλείνει τη ροή εξόδου

Για να μάθετε περισσότερα, επισκεφθείτε το Java ObjectOutputStream (επίσημη τεκμηρίωση Java).

ενδιαφέροντα άρθρα...