Bu eğitimde, örnekler yardımıyla Java ObjectOutputStream ve yöntemleri hakkında bilgi edineceğiz.
ObjectOutputStream
Sınıf java.io
paketine tarafından okunabilir nesneleri yazmak için kullanılabilir ObjectInputStream
.
OutputStream
Soyut sınıfı genişletir .
ObjectOutputStream ile Çalışma
Temel olarak, ObjectOutputStream
Java nesnelerini sınıf adını ve nesne değerlerini kullanarak kodlar. Ve bu nedenle karşılık gelen akışları oluşturur. Bu işlem serileştirme olarak bilinir.
Dönüştürülen bu akışlar dosyalarda saklanabilir ve ağlar arasında aktarılabilir.
Not : ObjectOutputStream
Sınıf yalnızca Serializable
arabirimi uygulayan nesneleri yazar . Bunun nedeni, nesnelerin akışa yazılırken serileştirilmesi gerektiğidir.
Bir ObjectOutputStream oluşturun
Bir nesne çıktı akışı yaratmak için önce java.io.ObjectOutputStream
paketi içe aktarmalıyız . Paketi içe aktardıktan sonra, işte nasıl bir çıktı akışı oluşturabiliriz.
// Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream);
Yukarıdaki örnekte, fileStream adlı dosya çıktı akışıyla bağlantılı olan objStream adlı bir nesne çıktı akışı oluşturduk.
ObjectOutputStream Yöntemleri
ObjectOutputStream
Sınıf, farklı yöntemler için uygulamalar içinde mevcut içerir OutputStream
sınıfı.
write () Yöntem
write()
- çıktı akışına bir bayt veri yazarwriteBoolean()
- verileri boole biçiminde yazarwriteChar()
- verileri karakter biçiminde yazarwriteInt()
- verileri tamsayı biçiminde yazarwriteObject()
- nesneyi çıktı akışına yazar
Örnek 1: Java ObjectOutputStream
ObjectOutputStream
Bir dosyada nesneleri depolamak ve ObjectInputStream
bu nesneleri dosyalardan okumak için nasıl kullanabileceğimize bakalım.
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; class Main ( public static void main(String() args) ( int data1 = 5; String data2 = "This is programiz"; try ( FileOutputStream file = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // writes objects to output stream output.writeInt(data1); output.writeObject(data2); // Reads data using the ObjectInputStream FileInputStream fileStream = new FileInputStream("file.txt"); ObjectInputStream objStream = new ObjectInputStream(fileStream); System.out.println("Integer data :" + objStream.readInt()); System.out.println("String data: " + objStream.readObject()); output.close(); objStream.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Çıktı
Tamsayı verileri: 5 Dize verileri: Bu programdır
Yukarıdaki örnekte, dosyalardan bir tamsayı verisi ve nesne verisi okumak için readInt()
yöntemi ve readObject()
yöntemi kullandık.
Burada ObjectOutputStream
veriyi dosyaya yazmak için kullandık. Daha sonra verileri ObjectInputStream
.
Örnek 2: Java ObjectOutputStream
Başka bir örnek alalım,
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Dog implements Serializable ( String name; String breed; public Dog(String name, String breed) ( this.name = name; this.breed = breed; ) ) class Main ( public static void main(String() args) ( // Creates an object of Dog class Dog dog1 = new Dog("Tyson", "Labrador"); try ( FileOutputStream fileOut = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream objOut = new ObjectOutputStream(fileOut); // Writes objects to the output stream objOut.writeObject(dog1); // Reads the object FileInputStream fileIn = new FileInputStream("file.txt"); ObjectInputStream objIn = new ObjectInputStream(fileIn); // Reads the objects Dog newDog = (Dog) objIn.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); objOut.close(); objIn.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Çıktı
Köpek Adı: Tyson Köpek Cinsi: Labrador
Yukarıdaki örnekte, oluşturduk
ObjectOutputStream
adlandırılmış fileOut kullanarakFileOutputStream
objOut adlıObjectInputStream
isimli fileIn kullanarak objIn olarakFileInputStream
adlandırılmış.- Dog sınıfından bir nesne dog1.
Burada, nesneyi dosyaya yazmak için nesne çıktı akışını kullandık. Ve nesneyi dosyadan okumak için nesne giriş akışı.
Not : Dog sınıfı Serializable
arabirimi uygular . Bunun nedeni ObjectOutputStream
, çıktı akışına serileştirilebilen yalnızca nesneleri yazmasıdır.
Diğer ObjectOutputStream Yöntemleri
Yöntemler | Açıklamalar |
---|---|
flush() | çıktı akışındaki tüm verileri temizler |
drain() | arabelleğe alınan tüm verileri çıktı akışına koyar |
close() | çıktı akışını kapatır |
Daha fazla bilgi edinmek için Java ObjectOutputStream (resmi Java belgeleri) sayfasını ziyaret edin.