Рубрики

Java.io.ObjectOutputStream Класс в Java | Набор 2

Java.io.ObjectOutputStream Класс в Java | Комплект 1

Больше методов:

  • void write (byte [] buf): записывает массив байтов. Этот метод будет блокироваться, пока байт не будет записан.
    Syntax :public void write(byte[] buf)
               throws IOException
    Parameters:
    buf - the data to be written
    Throws:
    IOException 
    
  • void write (byte [] buf, int off, int len): записывает подчиненный массив байтов.
    Syntax :public void write(byte[] buf,
             int off,
             int len)
               throws IOException
    Parameters:
    buf - the data to be written
    off - the start offset in the data
    len - the number of bytes that are written
    Throws:
    IOException
  • void write (int val): записывает байт. Этот метод будет блокироваться, пока байт не будет записан.
    Syntax :public void write(int val)
               throws IOException
    Parameters:
    val - the byte to be written to the stream
    Throws:
    IOException 
  • void writeBoolean (логическое значение val): записывает логическое значение.
    Syntax :public void writeBoolean(boolean val)
                      throws IOException
    Parameters:
    val - the boolean to be written
    Throws:
    IOException 
  • void writeByte (int val): записывает 8-битный байт.
    Syntax :public void writeByte(int val)
                   throws IOException
    Parameters:
    val - the byte value to be written
    Throws:
    IOException
  • void writeBytes (String str): записывает строку как последовательность байтов.
    Syntax :public void writeBytes(String str)
                    throws IOException
    Parameters:
    str - the String of writeBytes to be written
    Throws:
    IOException
  • void writeChar (int val): записывает 16-битный символ.
    Syntax :public void writeChar(int val)
                   throws IOException
    Parameters:
    val - the char value to be written
    Throws:
    IOException
  • void writeChars (String str): записывает строку как последовательность символов.
    Syntax :public void writeChars(String str)
                    throws IOException
    Parameters:
    str - the String of chars to be written
    Throws:
    IOException
  • protected void writeClassDescriptor (ObjectStreamClass desc): записать указанный дескриптор класса в ObjectOutputStream. Дескрипторы классов используются для идентификации классов объектов, записанных в поток. Подклассы ObjectOutputStream могут переопределить этот метод для настройки способа записи дескрипторов классов в поток сериализации. Соответствующий метод в ObjectInputStream, readClassDescriptor, должен затем быть переопределен, чтобы восстановить дескриптор класса из его пользовательского представления потока. По умолчанию этот метод записывает дескрипторы классов в соответствии с форматом, определенным в спецификации сериализации объектов.
    Syntax :protected void writeClassDescriptor(ObjectStreamClass desc)
                                 throws IOException
    Parameters:
    desc - class descriptor to write to the stream
    Throws:
    IOException
  • void writeDouble (double val): записывает 64-битный double.
    Syntax :public void writeDouble(double val)
                     throws IOException
    Parameters:
    val - the double value to be written
    Throws:
    IOException
  • void writeFields (): записать буферизованные поля в поток.
    Syntax :public void writeFields()
                     throws IOException
    Throws:
    IOException
    NotActiveException
  • void writeFloat (float val): записывает 32-битное значение с плавающей точкой.
    Syntax :public void writeFloat(float val)
                    throws IOException
    Parameters:
    val - the float value to be written
    Throws:
    IOException 
  • void writeInt (int val): записывает 32-битное int.
    Syntax :public void writeInt(int val)
                  throws IOException
    Parameters:
    val - the integer value to be written
    Throws:
    IOException
    
  • void writeLong (long val): записывает 64-битную длину.
    Syntax :public void writeLong(long val)
                   throws IOException
    Parameters:
    val - the long value to be written
    Throws:
    IOException 
  • void writeObject (Object obj): записать указанный объект в ObjectOutputStream. Записывается класс объекта, подпись класса, а также значения непереходных и нестатических полей класса и всех его супертипов. , Сериализация по умолчанию для класса может быть переопределена с помощью методов writeObject и readObject. Объекты, на которые ссылается этот объект, записываются транзитивно, так что полный эквивалентный граф объектов может быть восстановлен с помощью ObjectInputStream.
    Syntax :public final void writeObject(Object obj)
                           throws IOException
    Parameters:
    obj - the object to be written
    Throws:
    InvalidClassException 
    NotSerializableException 
    IOException
  • protected void writeObjectOverride (Object obj): Метод, используемый подклассами, чтобы переопределить метод writeObject по умолчанию. Этот метод вызывается доверенными подклассами ObjectInputStream, которые сконструировали ObjectInputStream, используя защищенный конструктор без аргументов. Предполагается, что подкласс обеспечит метод переопределения с модификатором «final».
    Syntax :protected void writeObjectOverride(Object obj)
                                throws IOException
    Parameters:
    obj - object to be written to the underlying stream
    Throws:
    IOException 
  • void writeShort (int val): записывает 16-битный код .
    Syntax :public void writeShort(int val)
                    throws IOException
    Parameters:
    val - the short value to be written
    Throws:
    IOException
  • protected void writeStreamHeader (): метод writeStreamHeader предоставляется, чтобы подклассы могли добавлять или добавлять свой собственный заголовок в поток. Он записывает магическое число и версию в поток.
    Syntax :protected void writeStreamHeader()
                              throws IOException
    Throws:
    IOException
  • void writeUnshared (Object obj): записывает «неразделенный» объект в ObjectOutputStream. Этот метод идентичен writeObject, за исключением того, что он всегда записывает данный объект как новый уникальный объект в потоке (в отличие от обратной ссылки, указывающей на ранее сериализованный экземпляр). В частности:
    • Объект, записанный с помощью writeUnshared, всегда сериализуется так же, как и вновь появляющийся объект (объект, который еще не был записан в поток), независимо от того, был ли объект записан ранее.
    • Если writeObject используется для записи объекта, который был ранее записан с помощью writeUnshared, предыдущая операция writeUnshared обрабатывается так, как если бы это была запись отдельного объекта. Другими словами, ObjectOutputStream никогда не будет генерировать обратные ссылки на данные объекта, записанные с помощью вызовов writeUnshared.

    Хотя запись объекта с помощью writeUnshared сама по себе не гарантирует уникальную ссылку на объект при его десериализации, она позволяет одному объекту быть определенным несколько раз в потоке, поэтому множественные вызовы readUnshared получателем не будут конфликтовать. Обратите внимание, что правила, описанные выше, применяются только к объекту базового уровня, написанному с помощью writeUnshared, а не к любым транзитивно ссылочным подобъектам в графе объектов, подлежащем сериализации.
    Подклассы ObjectOutputStream, которые переопределяют этот метод, могут быть созданы только в контекстах безопасности, обладающих «enableSubclassImplementation» SerializablePermission; любая попытка создания экземпляра такого подкласса без этого разрешения вызовет исключение SecurityException.

    Syntax :public void writeUnshared(Object obj)
                       throws IOException
    Parameters:
    obj - object to write to stream
    Throws:
    NotSerializableException
    InvalidClassException
    IOException 
  • void writeUTF (String str): примитивная запись данных этой строки в модифицированном формате UTF-8. Обратите внимание, что существует существенная разница между записью строки в поток в качестве примитивных данных или в виде объекта. Экземпляр String, написанный writeObject, изначально записывается в поток как String. В будущем writeObject () вызывает запись ссылок на строку в поток.
    Syntax :public void writeUTF(String str)
                  throws IOException
    Parameters:
    str - the String to be written
    Throws:
    IOException
  • void flush (): очищает поток. Это записывает любые буферизованные выходные байты и сбрасывает их в основной поток.
    Syntax :public void flush()
               throws IOException
    Throws:
    IOException

Программа:

// Java-программа, демонстрирующая ObjectOutputStream
// написать методы

import java.io.*;

class ObjectOutputStreamDemo

{

    public static void main(String[] args) throws IOException, ClassNotFoundException 

    {

        FileOutputStream fout = new FileOutputStream("file.txt");

        ObjectOutputStream oot = new ObjectOutputStream(fout);

          

        String a = "GeeksforGeeks";

        String b = "Geek";

        byte[] be = {'A','B','C'};

  

        // иллюстрирующий write ()

        oot.write(1);

  

        // иллюстрирующий writeInt (int i)

        oot.writeInt(1);

  

        // иллюстрирующий writeBoolean (логическое a)

        oot.writeBoolean(true);

  

        // иллюстрирующий writeObject (Object x)

        oot.writeObject(a);

  

        // иллюстрирующий writeByte (byte a)

        oot.writeByte(65);

  

        // иллюстрирующий writeBytes (String b)

        oot.writeBytes(b);

  

        // иллюстрирующий writeDouble (double d)

        oot.writeDouble(2.3);

  

        // иллюстрирующий writeUTF (String str)

        oot.writeUTF(a);

  

        // иллюстрирующий writeFloat (float x)

        oot.writeFloat(2.42f);

  

        // иллюстрирующий writeLone (long x)

        oot.writeLong(234342347908l);

  

        // иллюстрирующий writeChars (String a)

        oot.writeChars(a);

  

        // иллюстрирующий writeShort (int val)

        oot.writeShort(2);

  

        // иллюстрирующий запись (byte [] buff)

        oot.write(be);

          

        // очистка потока

        oot.flush();

          

        oot.close();

          

        byte c[]=new byte[4];

        char c1[]=new char[13];

          

        FileInputStream fin = new FileInputStream("file.txt");

        ObjectInputStream oit = new ObjectInputStream(fin);

          

        System.out.println(oit.read());

        System.out.println(oit.readInt());

        System.out.println(oit.readBoolean());

        System.out.println(oit.readObject());

        System.out.println(oit.readByte());

        oit.read(c);

          

        for (int i = 0; i  < 4 ; i++) 

        {

            System.out.print((char)c[i]);

        }

          

        System.out.println();

        System.out.println(oit.readDouble());

        System.out.println(oit.readUTF());

        System.out.println(oit.readFloat());

        System.out.println(oit.readLong());

          

        for (int i = 0; i < 13 ; i++)

        {

            System.out.print(oit.readChar());

        }

          

        System.out.println();

        System.out.println(oit.readShort());

        oit.readFully(be);

          

        for (int i = 0; i < 3 ; i++) 

        {

            System.out.print((char)be[i]);

        }

        oit.close();

    }

}

Выход :

1
1
true
GeeksforGeeks
65
Geek
2.3
GeeksforGeeks
2.42
234342347908
GeeksforGeeks
2
ABC

Программа 2:

// Java-программа, иллюстрирующая ObjectOutputStream
// написать методы

import java.io.*;

class ObjectOutputStreamDemo

{

    public static void main(String[] args) throws IOException,

            ClassNotFoundException

    {

            FileOutputStream out = new FileOutputStream("file.txt");

            ObjectOutputStream oout = new ObjectOutputStream(out);

            oout.writeObject(new demo());

              

            // иллюстрирующий writeUnshared ()

            // Записывает «неразделенный» объект в ObjectOutputStream.

            oout.writeUnshared(14);

              

            // очистить поток

            oout.flush();

              

            oout.close();

  

            FileInputStream fin=new FileInputStream("file.txt");

            ObjectInputStream ois=new ObjectInputStream(fin);

  

            // читаем объект из потока и приводим его к демонстрации

            demo obj = (demo)ois.readObject();

              

            System.out.println( obj.var);

            System.out.println(ois.readUnshared());

    }

}

class demo implements Serializable

{

    static int var = 25;

          

    // назначаем новый serialPersistentFields

    private static final ObjectStreamField[] serialPersistentFields = 

    {

        new ObjectStreamField("var", Integer.TYPE)

    };

  

    private void readObject(ObjectInputStream in)

    throws IOException, ClassNotFoundException

    {

        // делает их доступными по имени.

        ObjectInputStream.GetField fields = in.readFields();

              

        // Получить значение именованного поля int из постоянного поля.

        var = fields.get("var", 0);

    }

  

    private void writeObject(ObjectOutputStream out)

                throws IOException

    {

        // записать в массив ObjectStreamField переменную строку

        ObjectOutputStream.PutField fields = out.putFields();

        fields.put("var", var);

              

        // Записать буферизованные поля в поток

        out.writeFields();

  

    }

}

Выход :

25
14

Эта статья предоставлена Nishant Sharma . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Java.io.ObjectOutputStream Класс в Java | Набор 2

0.00 (0%) 0 votes