logo

Java.io.ObjectOutputStream-luokka Javassa | Sarja 1

ObjectOutputStream kirjoittaa primitiivisiä tietotyyppejä ja kaavioita Java-objekteista OutputStreamiin. Objektit voidaan lukea (muodostaa uudelleen) ObjectInputStreamin avulla. Objektien jatkuva tallennus voidaan suorittaa käyttämällä tiedostoa streamille. 

  • Virtoihin voidaan kirjoittaa vain objekteja, jotka tukevat java.io.Serializable-käyttöliittymää. Kunkin serialoitavan kohteen luokka on koodattu sisältäen luokan luokan nimen ja allekirjoituksen, objektin kenttien ja taulukoiden arvot sekä kaikkien muiden alkuperäisistä objekteista viitattujen objektien sulkemisen.
  • Java ObjectOutputStreamia käytetään usein yhdessä Java ObjectInputStreamin kanssa. ObjectOutputStreamia käytetään Java-objektien kirjoittamiseen ja ObjectInputStreamia käytetään objektien lukemiseen uudelleen. 

Rakentajat:   

    suojattu ObjectOutputStream() :Tarjoa tapa alaluokille, jotka toteuttavat täysin uudelleen ObjectOutputStreamin, ettei tämän ObjectOutputStreamin toteutuksen juuri käyttämiä yksityisiä tietoja tarvitse allokoida.ObjectOutputStream(OutputStream out):Luo ObjectOutputStreamin, joka kirjoittaa määritettyyn OutputStreamiin. 

Menetelmät:   



    suojattu void annotateClass(Class cl):Alaluokat voivat toteuttaa tämän menetelmän salliakseen luokkatietojen tallentamisen virtaan. Oletuksena tämä menetelmä ei tee mitään. Vastaava menetelmä ObjectInputStreamissa on solveClass. Tätä menetelmää kutsutaan tarkalleen kerran jokaiselle virran yksilölliselle luokalle. Luokan nimi ja allekirjoitus on jo kirjoitettu streamiin. Tämä menetelmä voi käyttää vapaasti ObjectOutputStreamia tallentaakseen minkä tahansa sopivaksi katsomansa luokan esityksen (esimerkiksi luokkatiedoston tavut). ObjectInputStreamin vastaavan alaluokan solveClass-menetelmän on luettava ja käytettävä annotateClassin kirjoittamia tietoja tai objekteja. 
  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();  } } 

Lähtö:  

A
    suojattu void annotateProxyClass(Class cl):Alaluokat voivat ottaa käyttöön tämän menetelmän tallentaakseen mukautettuja tietoja streamiin yhdessä dynaamisten välityspalvelinluokkien kuvaajien kanssa. Tätä menetelmää kutsutaan täsmälleen kerran kullekin virran yksilölliselle välityspalvelimen luokkakuvaajalle. Tämän menetelmän oletustoteutus ObjectOutputStreamissa ei tee mitään.
    Vastaava menetelmä ObjectInputStreamissa on solveProxyClass. Tietylle ObjectOutputStream-aliluokalle, joka ohittaa tämän menetelmän, vastaavan ObjectInputStream-aliluokan solveProxyClass-menetelmän on luettava kaikki annotateProxyClassin kirjoittamat tiedot tai objektit. 
  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();  } } 

Lähtö:  

A
    void close() :Sulkee virran. Tätä menetelmää on kutsuttava kaikkien streamiin liittyvien resurssien vapauttamiseksi. 
  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();  } } 
    Lähtö: 
3
    void defaultWriteObject() :Kirjoita nykyisen luokan ei-staattiset ja ei-transienttikentät tähän virtaan. Tämä voidaan kutsua vain sarjoitettavan luokan writeObject-metodista. Se heittää NotActiveExceptionin, jos sitä kutsutaan toisin. 
  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();  }  }  } 

Lähtö:  

A
    suojattu tyhjennys () :Tyhjennä kaikki puskuroidut tiedot ObjectOutputStreamista. Samanlainen kuin huuhtelu, mutta ei levitä huuhtelua alla olevaan virtaan. 
  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();  } } 
    suojattu boolean enableReplaceObject(boolean enable):Ota virta käyttöön virran objektien korvaamiseksi. Kun tämä on käytössä, replaceObject-menetelmää kutsutaan jokaiselle sarjoitettavalle objektille. 
    Jos enable on tosi ja tietoturvan hallintaohjelma on asennettu, tämä menetelmä kutsuu ensin suojauspäällikön checkPermission-menetelmää SerializablePermission('enableSubstitution') -luvalla varmistaakseen, että virta sallii virran objektien korvaamisen. 
  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();  } } 

Lähtö:  

false A
    ObjectOutputStream.PutField putFields():Hae objekti, jota käytetään puskuroimaan pysyviä kenttiä, jotka kirjoitetaan virtaan. Kentät kirjoitetaan virtaan, kun writeFields-menetelmää kutsutaan. 
  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();  } } 

Lähtö:  

A
    suojattu objekti korvaaObject(Object obj):Tämä menetelmä sallii ObjectOutputStreamin luotettujen alaluokkien korvata objektin toisella sarjoituksen aikana. Objektien korvaaminen on poissa käytöstä, kunnes enableReplaceObject kutsutaan. EnableReplaceObject-menetelmä tarkistaa, että vaihtoa pyytävää virtaa voidaan luottaa. Kunkin serialisointivirtaan kirjoitetun objektin ensimmäinen esiintyminen välitetään korvaavalle objektille. Myöhemmät viittaukset objektiin korvataan objektilla, jonka alkuperäinen korvaaObject-kutsu palauttaa. Sen varmistamiseksi, että objektien yksityinen tila ei vahingossa paljasteta, vain luotetut virrat voivat käyttää vaihtoobjektia. 
    Tätä menetelmää kutsutaan vain kerran, kun jokainen objekti kohtaa ensimmäisen kerran. Kaikki myöhemmät viittaukset objektiin ohjataan uuteen objektiin. Tämän menetelmän pitäisi palauttaa korvattava objekti tai alkuperäinen objekti.
    Null voidaan palauttaa korvattavana objektina, mutta se voi aiheuttaa NullReferenceExceptionin luokissa, jotka sisältävät viittauksia alkuperäiseen objektiin, koska ne saattavat odottaa objektia nollan sijasta. 
  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();  } } 

Lähtö:  

GeeksforGeeks
    void useProtocolVersion(int version) :Määritä striimiä kirjoitettaessa käytettävä stream-protokollan versio.Tämä rutiini tarjoaa koukun, joka mahdollistaa serialisoinnin nykyisen version kirjoittamisen muodossa, joka on taaksepäin yhteensopiva suoratoistomuodon aiemman version kanssa.
    Pyrimme kaikin tavoin välttämään ylimääräisten taaksepäin yhteensopivuusongelmien syntymistä. joskus ei kuitenkaan ole muuta vaihtoehtoa. 
  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();  } } 

Lähtö:  

GeeksforGeeks

Seuraava artikkeli: Java.io.ObjectOutputStream-luokka Javassa | Sarja 2

faktoriaalinen java


 

Luo tietokilpailu