Όταν σειριοποιείτε ένα αντικείμενο στην Java, μετατρέπετε τα δεδομένα σε ροές byte που στη συνέχεια μετατρέπονται ξανά στο αντίγραφο των αρχικών δεδομένων. Εάν αυτό ακούγεται μπερδεμένο, σκεφτείτε τη σειριοποίηση με τους ακόλουθους όρους. Εργάζεστε σε ένα έγγραφο και στη συνέχεια το αποθηκεύετε στον σκληρό σας δίσκο. Μιλώντας, κάνετε σειριοποίηση των δεδομένων, ώστε να μπορείτε να ανακτήσετε το αντίγραφο αργότερα. Η σειριοποίηση καθιστά τη μεταφορά δεδομένων σε δίκτυα πολύ πιο εύκολη και πιο αποτελεσματική.
Είναι σημαντικό να κατανοείτε τα βασικά της Java πριν κάνετε σειριοποίηση ενός αντικειμένου. Εάν έχετε χρησιμοποιήσει γλώσσες προγραμματισμού όπως το Pascal και παλαιότερες εκδόσεις του C, θα γνωρίζετε ότι χωρίς σειριοποίηση αντικειμένων, ένας προγραμματιστής πρέπει να δημιουργήσει ένα ξεχωριστό αρχείο κειμένου I/O για αποθήκευση και φόρτωση δεδομένων. Η σειριοποίηση αντικειμένων σε Java παρακάμπτει τη δημιουργία αυτού του αρχείου κειμένου για αποθήκευση δεδομένων, εξοικονομώντας χρόνο και κόστος προγραμματισμού. Το ακόλουθο άρθρο περιέχει τα βήματα για τη σειριοποίηση ενός αντικειμένου στη Java. Το δείγμα κώδικα σε αυτό το άρθρο χρησιμοποιείται από το The Java Developers Almanac 1.4.
Βήματα
Βήμα 1. Ανοίξτε το αντικείμενο κωδικοποίησης Java που απαιτεί σειριοποίηση ή δημιουργήστε ένα από την αρχή
Βήμα 2. Επιλέξτε το αντικείμενο στη Java που θέλετε να σειριοποιήσετε
Σε αυτό το παράδειγμα, θα ονομάσουμε αυτό το αντικείμενο "MyObject".
Βήμα 3. Ενεργοποιήστε τη σειριοποίηση αντικειμένων σε Java, κάνοντας την κλάση MyObject να υλοποιήσει τη διεπαφή java.io. Serialize
Απλώς προσθέστε την ακόλουθη γραμμή κώδικα στην αρχή του κώδικα, αντικαθιστώντας τη γραμμή "δημόσια τάξη MyObject". Δημόσια κλάση MyObject υλοποιεί java.io. Serializable
Βήμα 4. Τώρα το αντικείμενό σας είναι σειριοποιήσιμο, αυτό σημαίνει ότι μπορεί να γραφτεί από μια ροή εξόδου, όπως αυτό:
-
Οι ακόλουθες γραμμές κώδικα επεξηγούν τον τρόπο εγγραφής του MyObject (ή οποιουδήποτε σειριοποιήσιμου αντικειμένου) σε ένα αρχείο ή δίσκο.
προσπαθήστε{
// Σειροποίηση αντικειμένου δεδομένων σε ένα αρχείο
ObjectOutputStream out = νέο ObjectOutputStream (νέο FileOutputStream ("MyObject.ser"));
out.writeObject (αντικείμενο);
out.close ();
// Σειροποίηση αντικειμένου δεδομένων σε έναν πίνακα byte
ByteArrayOutputStream bos = νέο ByteArrayOutputStream ();
έξω = νέο ObjectOutputStream (bos);
out.writeObject (αντικείμενο);
out.close ();
// Λάβετε τα byte του σειριακού αντικειμένου
byte buf = bos.toByteArray ();
} catch (IOException e) {
}
Βήμα 5. Μπορεί να διαβαστεί ως εξής:
-
δοκιμάστε {FileInputStream door = new FileInputStream ("name_of_file.sav"); ObjectInputStream reader = νέο ObjectInputStream (πόρτα); MyObject x = νέο MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
Βήμα 6. Εκτελέστε τον σειριακό κωδικό αντικειμένου στο πρόγραμμα Java για να βεβαιωθείτε ότι λειτουργεί αποτελεσματικά (προαιρετικά)
Βήμα 7. Αποθηκεύστε και κλείστε το σειριακό αντικείμενο στην Java
Συμβουλές
- Οι βελτιώσεις σειριοποίησης στο Java SE Development Kit 6 σάς επιτρέπουν να χρησιμοποιείτε το ObjectStreamClass αναζητώντας οποιαδήποτε μέθοδο για τον χειρισμό οποιωνδήποτε αντικειμένων που δεν μπορούν να σειριοποιηθούν.
- Για να βελτιώσετε τους χρόνους ανάγνωσης και εγγραφής σε μεγάλα δέντρα αντικειμένων, χρησιμοποιήστε τη λέξη -κλειδί "παροδικές" για παράδειγμα μεταβλητές που δεν απαιτούν σειριοποίηση. Αυτό θα αυξήσει την απόδοση στο ότι δεν διαβάζετε και γράφετε πλέον περιττά δεδομένα στη διαδικασία σειριοποίησης.
Προειδοποιήσεις
- Η Java βγαίνει με μια νέα έκδοση του κιτ προγραμματιστή τους σε ετήσια βάση. Οι νέες εκδόσεις περιλαμβάνουν αναβαθμίσεις και αλλαγές στον τρόπο σειριοποίησης ενός αντικειμένου στη Java. Επομένως, είναι σημαντικό να παρακολουθείτε τις αλλαγές στην έκδοση που χρησιμοποιείτε.
- Κατά τη σειριοποίηση αντικειμένων, δεν μπορείτε να κρυπτογραφήσετε ροές δεδομένων. Επομένως, θα χρειαστεί να βασιστείτε σε άλλες εφαρμογές ή διαδικασίες μεταφοράς δευτερεύοντος δικτύου για την προστασία των δεδομένων, εάν είναι απαραίτητο.
- Προς το παρόν δεν υπάρχει επιλογή που να σας επιτρέπει να γράψετε αντικείμενα σε ένα αρχείο τυχαίας πρόσβασης. Αντ 'αυτού, μπορείτε να χρησιμοποιήσετε τα ρεύματα εξόδου πίνακα Byte Array ως σύμβολο κράτησης θέσης από το οποίο μπορείτε να διαβάσετε και να γράψετε τα αντικείμενα. Ωστόσο, βεβαιωθείτε ότι ολόκληρο το αντικείμενο βρίσκεται στη ροή του πίνακα Byte, διαφορετικά η διαδικασία θα αποτύχει.