Amikor objektumot szerializál a Java -ban, az adatokat bájtfolyamokká alakítja át, amelyek később visszaállnak az eredeti adatok másolatává. Ha ez zavaróan hangzik, gondoljon a sorosításra a következő kifejezésekkel. Dokumentumon dolgozik, majd mentse a merevlemezére. Ön beszédmódban sorba állítja az adatokat, hogy később visszanyerhesse ezt a másolatot. A szerializálás sokkal könnyebbé és hatékonyabbá teszi az adatok hálózaton keresztül történő továbbítását.
Fontos, hogy megértse a Java alapjait, mielőtt objektumot szerializál. Ha olyan programozási nyelveket használt, mint a Pascal és a C régebbi verziói, akkor tudja, hogy az objektumok szerializálása nélkül a programozónak külön I/O szövegfájlt kell létrehoznia az adatok tárolására és betöltésére. Az objektumok szerializálása a Java -ban megkerüli ennek a szövegfájlnak az létrehozását az adatok tárolásához, időt és programozási költségeket takarítva meg. A következő cikk tartalmazza az objektumok Java -ban történő sorozatosításának lépéseit. A cikkben található mintakódot a The Java Developers Almanac 1.4 jóvoltából használjuk.
Lépések
1. lépés Nyissa meg a Java kódoló objektumot, amely szerializálást igényel, vagy hozzon létre egy semmiből
Lépés 2. Válassza ki a Java -ban a sorosítani kívánt objektumot
Ebben a példában ezt az objektumot „MyObject” -nek nevezzük.
3. lépés: Engedélyezze az objektumok szerializálását a Java -ban azáltal, hogy a MyObject osztályt végrehajtja a java.io. Serialize felület megvalósításához
Csak adja hozzá a következő kód sort a kód elejére, és cserélje le a "nyilvános osztályú MyObject" sort. A nyilvános osztályú MyObject a java.io. Serializable
4. lépés. Most az objektum sorosítható, ami azt jelenti, hogy egy kimeneti folyammal írható, például:
-
A következő kódsorok szemléltetik a MyObject (vagy bármely sorosítható objektum) fájlba vagy lemezre írásának módját.
próbáld ki{
// Adatobjektum sorba állítása fájlba
ObjectOutputStream out = new ObjectOutputStream (új FileOutputStream ("MyObject.ser"));
out.writeObject (objektum);
out.close ();
// Adatobjektum szerializálása bájt tömbhöz
ByteArrayOutputStream bos = új ByteArrayOutputStream ();
ki = új ObjectOutputStream (bos);
out.writeObject (objektum);
out.close ();
// Szerezze be a szerializált objektum bájtjait
bájt buf = bos.toByteArray ();
} fogás (IOException e) {
}
5. lépés. Így olvasható:
-
try {FileInputStream door = new FileInputStream ("name_of_file.sav"); ObjectInputStream olvasó = new ObjectInputStream (ajtó); MyObject x = új MyObject (); x = [MyObject] reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
6. lépés: Futtassa a sorosított objektumkódot a Java programon belül, hogy megbizonyosodjon arról, hogy az hatékonyan működik (opcionális)
7. lépés: Mentse el és zárja be a szerializált objektumot a Java -ban
Tippek
- A Java SE Development Kit 6 szerializálási fejlesztései lehetővé teszik az ObjectStreamClass lookup bármilyen módszer használatát a nem sorosítható osztályobjektumok kezelésére.
- A nagyméretű objektumfák olvasási és írási idejének javítása érdekében használja az „átmeneti” kulcsszót például olyan változókhoz, amelyek nem igényelnek sorosítást. Ez növeli a teljesítményt, mivel többé nem olvas és nem ír be felesleges adatokat a sorosítási folyamatba.
Figyelmeztetések
- A Java szinte évente megjelenik a fejlesztői készletük új verziójával. Az új verziók frissítéseket és módosításokat tartalmaznak az Objektumok Java -ban történő szerializálásának módjában. Ezért fontos figyelemmel kísérni a használt verzió változásait.
- Az objektumok sorba rendezésekor nem lehet titkosítani az adatfolyamokat. Ezért szükség esetén más alkalmazásokra vagy másodlagos hálózati szállítási folyamatokra kell támaszkodnia az adatok védelmében.
- Jelenleg nincs olyan lehetőség, amely lehetővé teszi objektumok írását véletlen hozzáférésű fájlba. Ehelyett a Byte Array bemeneti kimeneti adatfolyamokat használhatja helyőrzőként, amelyből olvashatja és írhatja az objektumokat. Azonban győződjön meg arról, hogy a teljes objektum a Bájt tömb folyamban van, különben a folyamat sikertelen lesz.