Sponsor Reklam 


05.12.2008 (01:45)

 Nesneyi Dosyaya Yazmak ve Okumak 
Dosyalara yazdırma işlemlerinde kimi zaman nesneleri de dosyaya yazdırıp dosyadan okumak isteyebiliriz. Bu nesnenin her bir özelliğinin (attribute) ayrı ayrı dosya da tutulmasından ve okurken ayrıştırıp çekilmesinden iyidir. Bu işlem C dilinde de structure'ın dosyaya yazılıp okunması gibidir.

Örnek kodda dikdörtgen isimli bir sınıf kullanılacak ve bu sınıftan dikdörtgen nesnesi üretilip doyaya yazılacaktır.

Rectangle.java:
package kodcu.net;

import java.io.Serializable;

public class Rectangle implements Serializable {
 
  private int width;
  private int height;
 
  // Constructor
  public Rectangle() {
    width = 0;
    height = 0;
  }
 
  // Constructor
  public Rectangle(int width, int height) {
    this.width = width;
    this.height = height;
  }
 
  // Dikdortgenin genisligini verir
  public int getWidth() {
    return width;
  }
 
  // Dikdortgenin yuksekligini verir
  public int getHeight() {
    return height;
  }
 
  // Dikdortgenin alanini verir
  public int getArea() {
    return (width * height);
  }
 
}

Dosya okuma ve yazma işlemini yapan Main.java:
package kodcu.net;

import java.io.ObjectOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.FileInputStream;

public class Main {
 
  static final String FILE_PATH = "C://object.dat";
 
  public static void main(String[] args) throws IOException {
    Rectangle rectangle = new Rectangle(10, 15);
    // nesneyi yaz
    writeObject(rectangle);
    // nesneyi oku
    readObject();
  }
 
  public static void writeObject(Rectangle rectangle) throws IOException {
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILE_PATH));
    oos.writeObject(rectangle);
    oos.close();
  }
 
  public static void readObject() throws IOException {
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_PATH));
    try {
      Rectangle rectangle = (Rectangle) ois.readObject();
      ois.close();
      System.out.println("Dikdortgenin Alani: " + rectangle.getArea());
    }
    catch (ClassNotFoundException ex) { }
  }
 
}

Main.java'yı çalıştırdıktan sonra C:\ dizininde object.dat isimli bir DAT dosyası oluşacak. Okuma yazma işlemi sonrasında ekranda dikdörtgenin alanı yazılacak.

Dikdortgenin Alani: 150

Rectangle sınıfında dikkat edilecek olursa Serializable sınıfı implement edilmiştir. Bunu yapmamızın sebebi nesnenin yazdırılması aşamasında içindeki bilgilerin kabolmaması gerektiğindendir.
Imza: admin








Yazilar kaynak gosterilmeden kopyalanamaz © www.kodcu.net // Twitter