Serializace

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Osamostatněno z Práce se soubory)
 
m (Jak serializace funguje?: Upraven formát aby bylo čitelnější)
 
Řádka 8: Řádka 8:
  
 
== Jak serializace funguje? ==
 
== Jak serializace funguje? ==
* Třída, jejíž instance chceme ukládat do souboru, musí implementovat rozhraní <code>Serializable</code>.
+
* <code>Serializable</code>
* Pro převod instance na posloupnost byte při zápisu použijeme třídu <code>ObjectOutputStream</code> pro zpětný převod při čtení třídu <code>ObjectInputStream</code>.
+
** Třída, jejíž instance chceme ukládat do souboru, musí implementovat rozhraní <code>Serializable</code>.
 +
* <code>ObjectInputStream</code>, <code>ObjectOutputStream</code>
 +
* Pro převod instance na posloupnost byte při zápisu použijeme třídu <code>ObjectOutputStream</code>,
 +
* pro zpětný převod při čtení třídu <code>ObjectInputStream</code>.
  
 
== Zápis a načtení objektu ==
 
== Zápis a načtení objektu ==

Aktuální verze z 19. 5. 2014, 08:33

Obsah

Co je to serializace?

Jak serializace funguje?

Zápis a načtení objektu

Následující kód je zjednodušený, neřeší ošetření vyjímek. Jde nám o schéma použití serializace.

Zápis instance třídy Poznamka do souboru na cestě cestaANazevSouboru:

  Poznamka pozn = new Poznamka();
  
  File file = new File("cestaANazevSouboru");          
      // Označuje soubor (uchovává cestu)
  FileOutputStream fos = new FileOutputStream(file);       
      // Otevře soubor pro zápis
  ObjectOutputStream objOut = new ObjectOutputStream(fos); 
      // Provádí převod objektů na posloupnost byte (serializaci)
  
  objOut.writeObject(pozn); //Zápis samotný
  
  objOut.close(); //Uzavření souboru
  fos.close(); //Uzavření souboru

Přečtení instance třídy Poznamka ze souboru na cestě cestaANazevSouboru:

  Poznamka pozn;
  
  File file = new File("cestaANazevSouboru");
  FileInputStream fis = new FileInputStream(file);
  ObjectInputStream objIn = new ObjectInputStream(fis);
  
  pozn = (Poznamka) objIn.readObject(); 
      // lépe by bylo ověřit správnou třídu pomocí instance_of
  
  objIn.close();
  fis.close(); //Uzavření souboru

Příklad: poznámkový blok

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje