logo

Java'da Java.io.ObjectOutputStream Sınıfı | Set 1

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:   

    korumalı ObjectOutputStream():ObjectOutputStream'i tamamen yeniden uygulayan alt sınıflara, yalnızca ObjectOutputStream'in bu uygulaması tarafından kullanılan özel verileri tahsis etmek zorunda kalmamaları için bir yol sağlayın.ObjectOutputStream(OutputStream çıkışı):Belirtilen OutputStream'e yazan bir ObjectOutputStream oluşturur. 

Yöntemler:   



    korumalı void annotateClass(Class cl):Alt sınıflar, sınıf verilerinin akışta saklanmasına izin vermek için bu yöntemi uygulayabilir. Varsayılan olarak bu yöntem hiçbir şey yapmaz. ObjectInputStream'deki karşılık gelen yöntem,sololClass'tır. Bu yöntem, akıştaki her benzersiz sınıf için tam olarak bir kez çağrılır. Sınıf adı ve imzası akışa zaten yazılmış olacaktır. Bu yöntem, uygun gördüğü sınıfın herhangi bir temsilini (örneğin sınıf dosyasının baytlarını) kaydetmek için ObjectOutputStream'i ücretsiz kullanabilir. ObjectInputStream'in karşılık gelen alt sınıfındaki resolutionClass yöntemi, annotateClass tarafından yazılan tüm verileri veya nesneleri okumalı ve kullanmalıdır. 
  Syntax :  protected void annotateClass(Class cl) throws IOException   Parameters:   cl - the class to annotate custom data for   Throws:   IOException 
Java
//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
    korumalı void annotateProxyClass(Class cl):Alt sınıflar, dinamik proxy sınıflarına yönelik tanımlayıcılarla birlikte özel verileri akışta depolamak için bu yöntemi uygulayabilir. Bu yöntem, akıştaki her benzersiz proxy sınıfı tanımlayıcısı için tam olarak bir kez çağrılır. Bu yöntemin ObjectOutputStream'deki varsayılan uygulaması hiçbir şey yapmaz.
    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:   IOException
Java
//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
    geçersiz kapatma():Akışı kapatır. Akışla ilişkili tüm kaynakları serbest bırakmak için bu yöntemin çağrılması gerekir. 
  Syntax :  public void close() throws IOException   Throws:   IOException
Java
//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();  } } 
    Çıkış: 
3
    void defaultWriteObject():Geçerli sınıfın statik olmayan ve geçici olmayan alanlarını bu akışa yazın. Bu yalnızca serileştirilen sınıfın writeObject yönteminden çağrılabilir. Aksi takdirde çağrılırsa NotActiveException'ı oluşturacaktır. 
  Syntax :  public void defaultWriteObject() throws IOException   Throws:   IOException 
Java
//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
    korumalı void Drain():ObjectOutputStream'de ara belleğe alınmış tüm verileri boşaltın. Flush'a benzer ancak floşu alttaki akışa yaymaz. 
  Syntax :  protected void drain() throws IOException   Throws:   IOException
Java
//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();  } } 
    korumalı boolean etkinleştirmeReplaceObject(boolean etkinleştirme):Akıştaki nesnelerin değiştirilmesini sağlamak için akışı etkinleştirin. Etkinleştirildiğinde, serileştirilen her nesne için replacementObject yöntemi çağrılır. 
    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:   SecurityException
Java
//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
    ObjectOutputStream.PutField putFields():Akışa yazılacak kalıcı alanları ara belleğe almak için kullanılan nesneyi alın. WriteFields yöntemi çağrıldığında alanlar akışa yazılacaktır. 
  Syntax :  public ObjectOutputStream.PutField putFields() throws IOException   Returns:   an instance of the class Putfield that holds the serializable fields   Throws:   IOException
Java
//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
    korumalı Object replacementObject(Object obj):Bu yöntem, ObjectOutputStream'in güvenilir alt sınıflarının serileştirme sırasında bir nesneyi diğeriyle değiştirmesine olanak tanır. EnableReplaceObject çağrılana kadar nesnelerin değiştirilmesi devre dışı bırakılır. EnableReplaceObject yöntemi, değiştirme isteğinde bulunan akışın güvenilir olup olmadığını kontrol eder. Serileştirme akışına yazılan her nesnenin ilk oluşumu, changeObject'e iletilir. Nesneye yapılan sonraki referanslar, orijinal changeObject çağrısı tarafından döndürülen nesneyle değiştirilir. Nesnelerin özel durumunun istenmeden açığa çıkmamasını sağlamak için yalnızca güvenilir akışlar changeObject'i kullanabilir. 
    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:   IOException
Java
//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
    void useProtocolVersion(int version):Akışı yazarken kullanılacak akış protokolü sürümünü belirtin. Bu rutin, Serileştirmenin geçerli sürümünün akış formatının önceki sürümüyle geriye doğru uyumlu bir formatta yazmasını sağlamak için bir kanca sağlar.
    İ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 IOException 
Java
 //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


 

Test Oluştur