18 Ekim 2017 Çarşamba

ObjectOutputStream Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.io.ObjectOutputStream;
Aynı nesneyi değiştirerek yazmak işe yaramaz. Açıklaması şöyle
The serialization protocol preserves object identity.

If you repeatedly write the same object, it will not be serialized with its contents again, the stream will just include a backreference to indicate that you wrote the same object another time.
Bazen ObjectOutputStream yerine ObjectOutput arayüzü kullanılır. Şöyle yaparız.
ObjectOutput out = new ObjectOutputStream(...);
constructor - FileOutputStream
Bir OutputStream alır. Şöyle yaparız.
FileOutputStream fileOut = new FileOutputStream("C:\\out.dat");
ObjectOutput out = new ObjectOutputStream(fileOut);
constructor - OutputStream
Şöyle yaparız.
Socket socket = ...;
OutputStream outputStream = socket.getOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
close metodu
Tüm stream'lerde olduğu gibi işimiz bitince nesnenin kapatılması gerekir.Şöyle yaparız.
out.close(); 
flush metodu
Şöyle yaparız.
out.flush();
reset metodu
Aynı nesneyi değiştirerek tekrar yazmak istersek kullanılır. Şöyle yaparız.
ObjectOutputStream out = ...;
out.writeObject(foo);
changeFoo(foo);
out.reset(); // Clears all shared references.
out.writeObject(foo); // Writes a new copy of "foo" with the new data.
writeInt metodu
Şöyle yaparız.
out.writeInt(3);
writeObject metodu
Şöyle yaparız. Exception'ları dikkate almadım
out.writeObject(myObject);
Şöyle yaparız.
String str = ...;
out.writeObject(str);
Eğer exception olursa şu hatayı alırız.
Exception in thread "main" java.io.NotSerializableException: Main
writeUnshared metodu
Bu metod bir nesne değiştirilip tekrar yazılacaksa kullanılabilir. Ancak şu konuya dikkat etmek gerekir.
writeUnshared is for the most part useless. Unshared is shallow, in that other objects that the object still points to will be shared.



Hiç yorum yok:

Yorum Gönder