ObjectOutputStream, Java nesnelerinin ilkel veri türlerini ve grafiklerini OutputStream'e yazar. Nesneler bir ObjectInputStream kullanılarak okunabilir (yeniden oluşturulabilir). Nesnelerin kalıcı olarak depolanması, akış için bir dosya kullanılarak gerçekleştirilebilir.
- Akışlara yalnızca Java.io.Serializable arayüzünü destekleyen nesneler yazılabilir. Serileştirilebilir her nesnenin sınıfı, sınıfın sınıf adı ve imzası, nesnenin alanlarının ve dizilerinin değerleri ve ilk nesnelerden başvurulan diğer nesnelerin kapanışı dahil olmak üzere kodlanır.
- Java ObjectOutputStream genellikle Java ObjectInputStream ile birlikte kullanılır. ObjectOutputStream, Java nesnelerini yazmak için kullanılır ve ObjectInputStream, nesneleri tekrar okumak için kullanılır.
Yapıcılar:
Yöntemler:
Syntax : protected void annotateClass(Class cl) throws IOException Parameters: cl - the class to annotate custom data for Throws: IOExceptionJava
//Java program demonstrating ObjectOutputStream methods //illustrating annotateClass(Class> cl) method import java.io.*; class ObjectOutputStreamDemo extends ObjectOutputStream { public ObjectOutputStreamDemo(OutputStream out) throws IOException { super(out); } public static void main(String[] args) throws IOException ClassNotFoundException { FileOutputStream fout = new FileOutputStream('file.txt'); ObjectOutputStreamDemo oot = new ObjectOutputStreamDemo(fout); Character c = 'A'; //illustrating annotateClass(Class> cl) method oot.annotateClass(Character.class); //Write the specified object to the ObjectOutputStream oot.writeObject(c); //flushing the stream oot.flush(); //closing the stream oot.close(); FileInputStream fin = new FileInputStream('file.txt'); ObjectInputStream oit = new ObjectInputStream(fin); System.out.print(oit.readObject()); oit.close(); } }
Çıkış:
linux komutları hangileri
A
ObjectInputStream'deki karşılık gelen yöntem,sololProxyClass'tır. Bu yöntemi geçersiz kılan belirli bir ObjectOutputStream alt sınıfı için, karşılık gelen ObjectInputStream alt sınıfındaki çözümlemeProxyClass yönteminin, annotateProxyClass tarafından yazılan tüm verileri veya nesneleri okuması gerekir.
Syntax : protected void annotateProxyClass(Class cl) throws IOException Parameters: cl - the proxy class to annotate custom data for Throws: IOExceptionJava
//Java program demonstrating ObjectOutputStream //illustrating annotateProxyClass(Class> cl) method import java.io.*; class ObjectOutputStreamDemo extends ObjectOutputStream { public ObjectOutputStreamDemo(OutputStream out) throws IOException { super(out); } public static void main(String[] args) throws IOException ClassNotFoundException { FileOutputStream fout = new FileOutputStream('file.txt'); ObjectOutputStreamDemo oot = new ObjectOutputStreamDemo(fout); Character c = 'A'; //illustrating annotateProxyClass(Class> cl) method oot.annotateProxyClass(Character.class); //Write the specified object to the ObjectOutputStream oot.writeObject(c); //flushing oot.flush(); //closing the stream oot.close(); FileInputStream fin = new FileInputStream('file.txt'); ObjectInputStream oit = new ObjectInputStream(fin); System.out.print(oit.readObject()); oit.close(); } }
Çıkış:
A
Syntax : public void close() throws IOException Throws: IOExceptionJava
//Java program demonstrating ObjectOutputStream //illustrating close() method import java.io.*; class ObjectOutputStreamDemo { public static void main(String[] args) throws IOException { FileOutputStream fout = new FileOutputStream('file.txt'); ObjectOutputStream oot = new ObjectOutputStream(fout); oot.write(3); //illustrating close() oot.close(); FileInputStream fin = new FileInputStream('file.txt'); ObjectInputStream oit = new ObjectInputStream(fin); System.out.println(oit.read()); oit.close(); } }
3
Syntax : public void defaultWriteObject() throws IOException Throws: IOExceptionJava
//Java program demonstrating ObjectOutputStream //illustrating defaultWriteObject() method import java.io.*; class ObjectOutputStreamDemo { public static void main(String[] arg) throws IOException ClassNotFoundException { Character a = 'A'; FileOutputStream fout = new FileOutputStream('file.txt'); ObjectOutputStream oot = new ObjectOutputStream(fout); oot.writeChar(a); oot.flush(); // close the stream oot.close(); FileInputStream fin = new FileInputStream('file.txt'); ObjectInputStream oit = new ObjectInputStream(fin); // reading the character System.out.println(oit.readChar()); } } class demo implements Serializable { String s = 'GeeksfoGeeks'; private void writeObject(ObjectOutputStream out) throws IOException ClassNotFoundException { //demonstrating defaultWriteObject() out.defaultWriteObject(); } } }
Çıkış:
A
Syntax : protected void drain() throws IOException Throws: IOExceptionJava
//Java program demonstrating ObjectOutputStream methods //illustrating drain() method import java.io.*; class ObjectOutputStreamDemo extends ObjectOutputStream { public ObjectOutputStreamDemo(OutputStream out) throws IOException { super(out); } public static void main(String[] arg) throws IOException ClassNotFoundException { FileOutputStream fout = new FileOutputStream('file.txt'); ObjectOutputStream oot = new ObjectOutputStream(fout); ObjectOutputStreamDemo obj = new ObjectOutputStreamDemo(oot); //illustrating drain() obj.drain(); //closing the underlying stream oot.close(); fout.close(); } }
Enable doğruysa ve yüklü bir güvenlik yöneticisi varsa, bu yöntem ilk önce güvenlik yöneticisinin checkPermission yöntemini SerializablePermission('enableSubstitution') izniyle çağırarak akışın akıştaki nesnelerin değiştirilmesini sağlamasının uygun olduğundan emin olur.
Syntax : protected boolean enableReplaceObject(boolean enable) throws SecurityException Parameters: enable - boolean parameter to enable replacement of objects Returns: the previous setting before this method was invoked Throws: SecurityExceptionJava
//Java program demonstrating ObjectOutputStream //illustrating enableReplaceObject method import java.io.*; class ObjectOutputStreamDemo extends ObjectOutputStream { public ObjectOutputStreamDemo(OutputStream out) throws IOException { super(out); } public static void main(String[] args) throws IOException ClassNotFoundException { FileOutputStream fout = new FileOutputStream('file.txt'); ObjectOutputStreamDemo oot = new ObjectOutputStreamDemo(fout); Character c = 'A'; //illustrating enableReplaceObject method System.out.println(oot.enableReplaceObject(true)); //Write the specified object to the ObjectOutputStream oot.writeObject(c); //flushing oot.flush(); //closing the stream oot.close(); FileInputStream fin = new FileInputStream('file.txt'); ObjectInputStream oit = new ObjectInputStream(fin); System.out.print(oit.readObject()); oit.close(); } }
Çıkış :
pvr tam formu
false A
Syntax : public ObjectOutputStream.PutField putFields() throws IOException Returns: an instance of the class Putfield that holds the serializable fields Throws: IOExceptionJava
//Java program demonstrating ObjectOutputStream //illustrating PutField method import java.io.*; class ObjectOutputStreamDemo { public static void main(String[] arg) throws IOException ClassNotFoundException { Character a ='A'; FileOutputStream fout = new FileOutputStream('file.txt'); ObjectOutputStream oot = new ObjectOutputStream(fout); oot.writeChar(a); oot.flush(); // close the stream oot.close(); FileInputStream fin = new FileInputStream('file.txt'); ObjectInputStream oit = new ObjectInputStream(fin); // reading the character System.out.println(oit.readChar()); } } class demo implements Serializable { private void writeObject(ObjectOutputStream out) throws IOException ClassNotFoundException { // Retrieve the object used to buffer // persistent fields to be written to the stream ObjectOutputStream.PutField fields = out.putFields(); } }
Çıkış:
A
Bu yöntem her nesneyle ilk karşılaşıldığında yalnızca bir kez çağrılır. Nesneye yapılan sonraki tüm referanslar yeni nesneye yönlendirilecektir. Bu yöntem, değiştirilecek nesneyi veya orijinal nesneyi döndürmelidir.
Değiştirilecek nesne olarak null döndürülebilir, ancak orijinal nesneye başvurular içeren sınıflarda null yerine bir nesne bekliyor olabileceğinden NullReferenceException'a neden olabilir.
Syntax : protected Object replaceObject(Object obj) throws IOException Parameters: obj - the object to be replaced Returns: the alternate object that replaced the specified one Throws: IOExceptionJava
//Java program demonstrating ObjectOutputStream //illustrating replaceObject method import java.io.*; class ObjectOutputStreamDemo extends ObjectOutputStream { public ObjectOutputStreamDemo(OutputStream out) throws IOException { super(out); } public static void main(String[] args) throws IOException ClassNotFoundException { FileOutputStream fout = new FileOutputStream('file.txt'); ObjectOutputStreamDemo oot = new ObjectOutputStreamDemo(fout); String a = 'forGeeks'; String b = 'Geeks'; //Write the specified object to the ObjectOutputStream oot.writeObject(a); //flushing the stream oot.flush(); oot.enableReplaceObject(true); //illustrating replaceObject System.out.print(oot.replaceObject(b)); //closing the stream oot.close(); FileInputStream fin = new FileInputStream('file.txt'); ObjectInputStream oit = new ObjectInputStream(fin); System.out.print(oit.readObject()); oit.close(); } }
Çıkış:
Java'da veritabanına bağlanma
GeeksforGeeks
İlave geriye dönük uyumsuzlukların ortaya çıkmasını önlemek için her türlü çaba gösterilecektir; ancak bazen başka alternatif yoktur.
Syntax : public void useProtocolVersion(int version) throws IOException Parameters: version - use ProtocolVersion from java.io.ObjectStreamConstants. Throws: IllegalStateException IllegalArgumentException IOExceptionJava
//Java program demonstrating ObjectOutputStream //illustrating useProtocolVersion() method import java.io.*; class ObjectOutputStreamDemo extends ObjectOutputStream { public ObjectOutputStreamDemo(OutputStream out) throws IOException { super(out); } public static void main(String[] args) throws IOException ClassNotFoundException { FileOutputStream fout = new FileOutputStream('file.txt'); ObjectOutputStreamDemo oot = new ObjectOutputStreamDemo(fout); String a = 'forGeeks'; String b = 'Geeks'; //illustrating useProtocolVersion() oot.useProtocolVersion(ObjectStreamConstants.PROTOCOL_VERSION_2); //Write the specified object to the ObjectOutputStream oot.writeObject(b); oot.writeObject(a); //flushing the stream oot.flush(); oot.close(); FileInputStream fin = new FileInputStream('file.txt'); ObjectInputStream oit = new ObjectInputStream(fin); System.out.print(oit.readObject()); System.out.print(oit.readObject()); oit.close(); } }
Çıkış:
GeeksforGeeks
Sonraki Makale: Java'da Java.io.ObjectOutputStream Sınıfı | 2'yi ayarla