Giriş
Şu satırı dahil ederiz.
Şöyle yaparız.
Tüm stream'lerde olduğu gibi işimiz bitince nesnenin kapatılması gerekir.Şöyle yaparız.
Şöyle yaparız.
Yazılacak nesneyi başka bir proxy nesne ile değiştirmek istersek kullanılabilir. protected metod olduğu çin ObjectOutputStream'den kalıtmak gerekir.
Örnek
Yazılacak nesenyi kontrol etmek için şöyle yaparız
Aynı nesneyi değiştirerek tekrar yazmak istersek kullanılır. Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız. Exception'ları dikkate almadım
Şu satırı dahil ederiz.
import java.io.ObjectOutputStream;
Yazılacak nesnenin Serializable arayüzünü gerçekleştirmesi gerekir. Açıklaması şöyle.Aynı nesneyi değiştirerek yazmak işe yaramaz. Açıklaması şöyle.Only objects that support the java.io.Serializable interface can be written to streams.
The serialization protocol preserves object identity.Bazen ObjectOutputStream yerine ObjectOutput arayüzü kullanılır. Şöyle yaparız.
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.
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 metoduTü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();
replaceObject metoduYazılacak nesneyi başka bir proxy nesne ile değiştirmek istersek kullanılabilir. protected metod olduğu çin ObjectOutputStream'den kalıtmak gerekir.
Örnek
Yazılacak nesenyi kontrol etmek için şöyle yaparız
public class MyOOS extends ObjectOutputStream {
public MyOOS(OutputStream out) throws IOException {
super(out);
enableReplaceObject(true);
}
@Override
protected Object replaceObject(Object obj) throws IOException {
if ((obj instanceof Serializable))
return obj;
System.err.println("Skipping serialization of "+obj);
return null;
}
}
reset metoduAynı 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.
Bu metod bir nesne değiştirilip tekrar yazılacaksa kullanılabilir. Ancak şu konuya dikkat etmek gerekir.
String str = ...;
out.writeObject(str);
Eğer exception olursa şu hatayı alırız.Exception in thread "main" java.io.NotSerializableException: Main
writeUnshared metoduBu 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