Veysel Uğur KIZMAZ

Java Serialization

27.03.2012Okunma Sayısı: 7789Kategori: Java

 Bu makalemizde Java’da Nesnenin Serileştirilmesi (Serileştirme – Serialize) işlemini inceleyeceğiz.

 
Serializable tanımı temel olarak bir değerin byte dizisine dönüştürülüp disk üzerinde hard copy olarak saklanabilmesine olanak sağlayan yapıdır. Bunun bize en büyük faydası, Java serileştirilmiş bir nesne (başka bir deyişle dosya), Java’nın kullanıldığı tüm platformlarda başarılı bir şekilde tekrar eski haline dönüştürülebilmektedir.
 
Java’da serileştirme işlemi için Serializable Interface’ini kullanıyoruz.
 
Bir örnek uygulama ile bu işlemin nasıl gerçekleştiğini inceleyelim. Örneğimizde kişi bilgilerini tuttuğumuz Kisi sınıfımız olsun. Main methodumuzda ise bir Kisi nesnesini Serialize ve Deserialize işlemlerinin nasıl yapıldığını inceleyelim.
 
Kisi.java
import java.io.Serializable;
 
publicclass Kisi implements Serializable {
      private String ad;
      private String soyad;
      private String eposta;
      private String telefon;
      //
      public Kisi(){ }
      public Kisi(String ad, String soyad, String eposta, String telefon){
            this.ad = ad;
            this.soyad = soyad;
            this.eposta = eposta;
            this.telefon = telefon;
      }
      public String getAd() {
            returnad;
      }
      publicvoid setAd(String ad) {
            this.ad = ad;
      }
      public String getSoyad() {
            returnsoyad;
      }
      publicvoid setSoyad(String soyad) {
            this.soyad = soyad;
      }
      public String getEposta() {
            returneposta;
      }
      publicvoid setEposta(String eposta) {
            this.eposta = eposta;
      }
      public String getTelefon() {
            returntelefon;
      }
      publicvoid setTelefon(String telefon) {
            this.telefon = telefon;
      }
      public String toString(){
            return"Ad : " + this.ad + "\nSoyad : " + this.soyad + "\nE-Posta : " + this.eposta + "\nTelefon : " + this.telefon;
      }
}
 
Şimdi Serialize işlemini gerçekleştirelim. Serialize işleminin sonucunu “D:\serimetin.txt” dosyasına aktaralım.
 
      privatestaticvoid Yaz(){
            try{
                  Kisi kisi = new Kisi("Veysel Uğur", "Kızmaz", "veysel@ugurkizmaz.com", "05322222222");
                  FileOutputStream dosya = new FileOutputStream("D:\\serimetin.txt");
                  ObjectOutputStream yaz = new ObjectOutputStream(dosya);
                  yaz.writeObject(kisi);
                  yaz.close();
                  System.out.println("Yazma Başarılı");
            }
            catch(Exception hata){
                  System.out.println("Yazma Başarısız");
            }
      }
 
Oluşturduğumuz kodu inceleyelim:
1. FileOutputStream : Dosya yazma işlemi gerçekleştireceğimiz belirtiyoruz.
2. ObjectOutputStream : Belirttiğimiz dosyaya nesne(object) yazma işlemini gerçekleştireceğimiz belirtiyoruz.
3. writeObject() : Parametredeki nesneyi belirtilen dosyaya yazıyoruz.
4. close() : Dosya yazma işlemi tamamlandıktan sonra dosya kullanımını bırakıyoruz.
 
Methodumuzu çalıştırdığımızda D sürücüsü içinde serimetin.txt dosyasının oluştuğunu görüyoruz.
 
 
 
 
Şimdi var olan serileştirilmiş bir dosyadaki nesneyi okuyalım.
 
      privatestaticvoid Oku(){
            try{
                  FileInputStream dosya = new FileInputStream("D:\\serimetin.txt");
                  ObjectInputStream oku = new ObjectInputStream(dosya);
                  Kisi kisi = (Kisi)oku.readObject();
 
                  System.out.println(kisi.toString());
                  oku.close();
            }
            catch(Exception hata){
                  System.out.println(hata.toString());
            }
      }
 
Oluşturduğumuz kodu inceleyelim:
1. FileInputStream : Dosya okuma işlemi gerçekleştireceğimiz belirtiyoruz.
2. ObjectInputStream : Belirttiğimiz dosyadan nesne(object) okuma işlemini gerçekleştireceğimiz belirtiyoruz.
3. readObject() : Dosyadaki nesneyi okuyup object olarak bize vermektedir.
4. close() : Dosya okuma işlemi tamamlandıktan sonra dosya kullanımını bırakıyoruz.
 
Kodumuzu çalıştıralım.
 
 
Sonuç olarak, bir nesneye Serialize ve Deserialize işlemlerini uyguladık.
 
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com

www.ugurkizmaz.com
twitter: @vukizmaz