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

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

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

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

Πριν μάθετε για την ObjectInputStreamτάξη, βεβαιωθείτε ότι γνωρίζετε για την κλάση ObjectOutputStream.

Εργασία του ObjectInputStream

Χρησιμοποιείται ObjectInputStreamκυρίως για την ανάγνωση δεδομένων που γράφτηκαν από το ObjectOutputStream.

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

Τώρα, αν χρειαστεί να διαβάσουμε αυτά τα αντικείμενα, θα χρησιμοποιήσουμε το ObjectInputStreamπου θα μετατρέψει τις ροές σε αντίστοιχα αντικείμενα. Αυτό είναι γνωστό ως αποεστεροποίηση.

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

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

 // Creates a file input stream linked with the specified file FileInputStream fileStream = new FileInputStream(String file); // Creates an object input stream using the file input stream ObjectInputStream objStream = new ObjectInputStream(fileStream); 

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

Τώρα, το objStreamδοχείο μπορεί να χρησιμοποιηθεί για την ανάγνωση αντικειμένων από το αρχείο.

Μέθοδοι του ObjectInputStream

Η ObjectInputStreamτάξη παρέχει υλοποιήσεις διαφορετικών μεθόδων που υπάρχουν στην InputStreamτάξη.

read () Μέθοδος

  • read() - διαβάζει ένα byte δεδομένων από τη ροή εισόδου
  • readBoolean() - διαβάζει δεδομένα σε δυαδική μορφή
  • readChar() - διαβάζει δεδομένα σε μορφή χαρακτήρα
  • readInt() - διαβάζει δεδομένα σε ακέραια μορφή
  • readObject() - διαβάζει το αντικείμενο από τη ροή εισόδου

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

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

 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"); ObjectOutputStream output = new ObjectOutputStream(file); // Writing to the file using ObjectOutputStream output.writeInt(data1); output.writeObject(data2); FileInputStream fileStream = new FileInputStream("file.txt"); // Creating an object input stream ObjectInputStream objStream = new ObjectInputStream(fileStream); //Using the readInt() method System.out.println("Integer data :" + objStream.readInt()); // Using the readObject() method System.out.println("String data: " + objStream.readObject()); output.close(); objStream.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Παραγωγή

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

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

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

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

Ας δούμε ένα άλλο πρακτικό παράδειγμα,

 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 dog = new Dog("Tyson", "Labrador"); try ( FileOutputStream file = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // Writes objects to the output stream output.writeObject(dog); FileInputStream fileStream = new FileInputStream("file.txt"); // Creates an ObjectInputStream ObjectInputStream input = new ObjectInputStream(fileStream); // Reads the objects Dog newDog = (Dog) input.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); output.close(); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Παραγωγή

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

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

  • ObjectOutputStreamονομαστική έξοδος χρησιμοποιώντας το FileOutputStreamόνομα
  • ObjectInputStreamονομαστική είσοδος χρησιμοποιώντας το FileInputStreamόνομα fileStream
  • Ένα αντικείμενο σκυλί της κατηγορίας Dog

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

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

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

Μέθοδοι Περιγραφές
available() επιστρέφει τον διαθέσιμο αριθμό byte στη ροή εισόδου
mark() επισημαίνει τη θέση στη ροή εισόδου μέχρι την οποία έχουν διαβαστεί τα δεδομένα
reset() επιστρέφει το στοιχείο ελέγχου στο σημείο της ροής εισόδου όπου ορίστηκε το σήμα
skipBytes() παραλείπει και απορρίπτει τα καθορισμένα byte από τη ροή εισόδου
close() κλείνει τη ροή εισόδου αντικειμένου

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

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