logo

Јава.ио.ОбјецтОутпутСтреам класа у Јави | Сет 1

ОбјецтОутпутСтреам уписује примитивне типове података и графиконе Јава објеката у ОутпутСтреам. Објекти се могу читати (реконституисати) коришћењем ОбјецтИнпутСтреам-а. Трајно складиштење објеката може се постићи коришћењем датотеке за ток. 

басх ако иначе
  • Само објекти који подржавају јава.ио.Сериализабле интерфејс могу да се уписују у стреамове. Класа сваког објекта који се може серијализовати је кодирана укључујући име класе и потпис класе, вредности поља и низова објекта и затварање свих других објеката на које се упућује из почетних објеката.
  • Јава ОбјецтОутпутСтреам се често користи заједно са Јава ОбјецтИнпутСтреам. ОбјецтОутпутСтреам се користи за писање Јава објеката, а ОбјецтИнпутСтреам се користи за поновно читање објеката. 

Конструктори:   

    заштићени ОбјецтОутпутСтреам() :Обезбедите начин да поткласе које потпуно поново имплементирају ОбјецтОутпутСтреам не морају да додељују приватне податке које је управо користила ова имплементација ОбјецтОутпутСтреам-а.ОбјецтОутпутСтреам(ОутпутСтреам оут) :Креира ОбјецтОутпутСтреам који пише у наведени ОутпутСтреам. 

Методе:   



    заштићена воид аннотатеЦласс(Цласс цл) :Подкласе могу применити овај метод да би омогућиле складиштење података класе у току. Подразумевано, овај метод не ради ништа. Одговарајући метод у ОбјецтИнпутСтреам-у је ресолвеЦласс. Овај метод се позива тачно једном за сваку јединствену класу у току. Име класе и потпис ће већ бити уписани у стрим. Ова метода може бесплатно користити ОбјецтОутпутСтреам да сачува било коју репрезентацију класе коју сматра прикладном (на пример, бајтове датотеке класе). Метода ресолвеЦласс у одговарајућој поткласи ОбјецтИнпутСтреам мора да чита и користи све податке или објекте које је написао аннотатеЦласс. 
  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();  } } 

Излаз :  

A
    заштићена воид аннотатеПрокиЦласс(Цласс цл) :Подкласе могу да имплементирају овај метод за складиштење прилагођених података у току заједно са дескрипторима за динамичке прокси класе. Овај метод се позива тачно једном за сваки јединствени дескриптор прокси класе у току. Подразумевана имплементација овог метода у ОбјецтОутпутСтреам не ради ништа.
    Одговарајући метод у ОбјецтИнпутСтреам-у је ресолвеПрокиЦласс. За дату подкласу ОбјецтОутпутСтреам која замењује овај метод, метод ресолвеПрокиЦласс у одговарајућој поткласи ОбјецтИнпутСтреам мора да прочита све податке или објекте које је написао аннотатеПрокиЦласс. 
  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();  } } 

Излаз :  

A
    воид цлосе():Затвара ток. Овај метод се мора позвати да би се ослободили сви ресурси повезани са стримом. 
  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();  } } 
    Излаз : 
3
    воид дефаултВритеОбјецт() :Упишите нестатична и непролазна поља тренутне класе у овај ток. Ово се може позвати само из методе вритеОбјецт класе која се серијализује. Избациће НотАцтивеЕкцептион ако се зове другачије. 
  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();  }  }  } 

Излаз :  

A
    заштићени воид драин() :Испразните све бафероване податке у ОбјецтОутпутСтреам. Слично флусху, али не шири флусх до основног тока. 
  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();  } } 
    заштићени логички енаблеРеплацеОбјецт(боолеан енабле):Омогућите стриму да изврши замену објеката у стриму. Када је омогућена метода реплацеОбјецт се позива за сваки објекат који се серијализује. 
    Ако је омогућено тачно и ако је инсталиран менаџер безбедности, овај метод прво позива метод цхецкПермиссион менаџера безбедности са дозволом СериализаблеПермиссион('енаблеСубститутион') да би се уверио да је у реду омогућити стриму да врши замену објеката у току. 
  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();  } } 

Излаз :  

false A
    ОбјецтОутпутСтреам.ПутФиелд путФиелдс():Преузми објекат који се користи за баферовање трајних поља која ће бити уписана у ток. Поља ће бити уписана у ток када се позове метод вритеФиелдс. 
  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();  } } 

Излаз :  

A
    заштићени објекат реплацеОбјецт(Објецт обј):Овај метод ће омогућити поузданим поткласама ОбјецтОутпутСтреам-а да замене један објекат другим током серијализације. Замена објеката је онемогућена док се не позове енаблеРеплацеОбјецт. Метод енаблеРеплацеОбјецт проверава да ли ток који захтева замену може бити поуздан. Прво појављивање сваког објекта уписаног у ток серијализације се прослеђује у реплацеОбјецт. Накнадне референце на објекат се замењују објектом који је вратио оригинални позив реплацеОбјецт. Да би се осигурало да приватно стање објеката није ненамерно изложено, само поуздани токови могу да користе реплацеОбјецт. 
    Овај метод се позива само једном када се сваки објекат први пут сретне. Све накнадне референце на објекат биће преусмерене на нови објекат. Овај метод треба да врати објекат који треба заменити или оригинални објекат.
    Нулл се може вратити као објекат који се замењује, али може изазвати НуллРеференцеЕкцептион у класама које садрже референце на оригинални објекат јер можда очекују објекат уместо нулл. 
  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();  } } 

Излаз :  

GeeksforGeeks
    воид усеПротоцолВерсион(инт версион) :Одредите верзију протокола за стрим који ће се користити приликом писања стрима. Ова рутина обезбеђује куку која омогућава тренутној верзији серијализације да пише у формату који је уназад компатибилан са претходном верзијом формата стрима.
    Биће учињени сви напори да се избегне увођење додатних некомпатибилности уназад; међутим понекад нема друге алтернативе. 
  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();  } } 

Излаз :  

GeeksforGeeks

Следећи чланак: Јава.ио.ОбјецтОутпутСтреам класа у Јави | Сет 2


 

Креирај квиз