Σε αυτό το σεμινάριο, θα μάθουμε για το 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
όνομα fileOutObjectInputStream
ονομάζεται objIn χρησιμοποιώντας τοFileInputStream
όνομα fileIn.- Ένα αντικείμενο dog1 της κατηγορίας Dog.
Εδώ, στη συνέχεια χρησιμοποιήσαμε τη ροή εξόδου αντικειμένου για να γράψουμε το αντικείμενο στο αρχείο. Και, η ροή εισόδου αντικειμένου για να διαβάσετε το αντικείμενο από το αρχείο.
Σημείωση : Η κατηγορία Dog εφαρμόζει τη Serializable
διεπαφή. Είναι επειδή το ObjectOutputStream
μόνο γράφει αντικείμενα που μπορούν να σειριοποιηθούν στη ροή εξόδου.
Άλλες μέθοδοι ObjectOutputStream
Μέθοδοι | Περιγραφές |
---|---|
flush() | διαγράφει όλα τα δεδομένα από τη ροή εξόδου |
drain() | βάζει όλα τα αποθηκευμένα δεδομένα στη ροή εξόδου |
close() | κλείνει τη ροή εξόδου |
Για να μάθετε περισσότερα, επισκεφθείτε το Java ObjectOutputStream (επίσημη τεκμηρίωση Java).