Spec-Zone.ru › OpenJDK 25

Класс ObjectOutputStream

java.lang.Object
java.io.OutputStream
java.io.ObjectOutputStream
Все реализуемые интерфейсы:
Closeable, DataOutput, Flushable, ObjectOutput, ObjectStreamConstants, AutoCloseable
public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants
ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. Объекты можно прочитать (восстановить) с помощью ObjectInputStream. Постоянное хранение объектов можно обеспечить, используя в качестве потока файл. Если поток представляет собой сетевой сокет, объекты можно восстановить на другом узле или в другом процессе.

В потоки можно записывать только объекты, поддерживающие интерфейс java.io.Serializable. Кодируется класс каждого сериализуемого объекта, включая имя и сигнатуру класса, значения полей и массивов объекта, а также все другие объекты, на которые ссылаются исходные объекты.

Для записи объекта в поток используется метод writeObject. С помощью writeObject записывается любой объект, в том числе строки и массивы. В поток можно записать несколько объектов или примитивных значений. Объекты необходимо считывать из соответствующего ObjectInputstream в том же порядке и с теми же типами, с которыми они были записаны.

Примитивные типы данных также можно записывать в поток с помощью соответствующих методов из DataOutput. Строки можно записывать с помощью метода writeUTF.

Механизм сериализации объекта по умолчанию записывает класс объекта, сигнатуру класса и значения всех непреходящих и нестатических полей. Ссылки на другие объекты (за исключением ссылок в преходящих или статических полях) также приводят к записи этих объектов. Множественные ссылки на один объект кодируются с помощью механизма совместного использования ссылок, благодаря чему графы объектов можно восстановить в том же виде, в каком они были записаны.

Например, чтобы записать объект, который можно прочитать с помощью примера из ObjectInputStream:

     try (FileOutputStream fos = new FileOutputStream("t.tmp");
          ObjectOutputStream oos = new ObjectOutputStream(fos)) {
         oos.writeObject("Today");
         oos.writeObject(LocalDateTime.now());
     } catch (Exception ex) {
         // handle exception
     }

Сериализуемые классы, требующие специальной обработки в процессе сериализации и десериализации, должны реализовать методы со следующими сигнатурами:

    private void readObject(java.io.ObjectInputStream stream)
        throws IOException, ClassNotFoundException;
    private void writeObject(java.io.ObjectOutputStream stream)
        throws IOException;
    private void readObjectNoData()
        throws ObjectStreamException;

Чтобы метод использовался при сериализации или десериализации, его имя, модификаторы, тип возвращаемого значения, количество и тип параметров должны в точности совпадать. Методы должны объявлять только проверяемые исключения, соответствующие этим сигнатурам.

Метод writeObject отвечает за запись состояния объекта для конкретного класса, чтобы соответствующий метод readObject мог его восстановить. Метод не должен обрабатывать состояние, принадлежащее суперклассам или подклассам объекта. Состояние сохраняется путем записи отдельных полей в ObjectOutputStream с помощью метода writeObject или методов для примитивных типов данных, поддерживаемых DataOutput.

При сериализации не записываются поля объектов, не реализующих интерфейс java.io.Serializable. Подклассы объектов, не поддерживающих сериализацию, могут быть сериализуемыми. В этом случае у несериализуемого класса должен быть конструктор без аргументов, позволяющий инициализировать его поля. В таком случае подкласс отвечает за сохранение и восстановление состояния несериализуемого класса. Часто поля этого класса доступны (public, package или protected) либо существуют методы get и set, с помощью которых можно восстановить состояние.

Сериализацию объекта можно запретить, реализовав методы writeObject и readObject, выбрасывающие NotSerializableException. ObjectOutputStream перехватит это исключение и прервет процесс сериализации.

Реализация интерфейса Externalizable позволяет объекту полностью управлять содержимым и форматом его сериализованного представления. Методы интерфейса Externalizable — writeExternal и readExternal — вызываются для сохранения и восстановления состояния объектов. Реализующий их класс может записывать и считывать собственное состояние с помощью всех методов ObjectOutput и ObjectInput. Объекты отвечают за обработку любых изменений версий.

Константы перечислений сериализуются иначе, чем обычные сериализуемые объекты и объекты Externalizable. Сериализованное представление константы перечисления состоит только из ее имени; значения полей константы не передаются. Для сериализации константы перечисления ObjectOutputStream записывает строку, возвращаемую методом name этой константы. Как и другие сериализуемые объекты или объекты Externalizable, константы перечислений могут быть целями обратных ссылок, встречающихся далее в потоке сериализации. Процесс сериализации констант перечислений нельзя настроить; любые методы writeObject и writeReplace, определенные для конкретного класса перечисления, при сериализации игнорируются. Аналогично игнорируются объявления полей serialPersistentFields и serialVersionUID — для всех типов перечислений задано фиксированное значение serialVersionUID, равное 0L.

Примитивные данные, за исключением сериализуемых полей и данных Externalizable, записываются в ObjectOutputStream в виде блоков данных. Блок данных состоит из заголовка и данных. Заголовок блока данных включает маркер и количество следующих за ним байтов. Последовательные записи примитивных данных объединяются в один блок данных. Размер блока данных составляет 1024 байта. Каждый блок данных заполняется до 1024 байт или записывается при завершении режима блоков данных. Вызовы методов ObjectOutputStream writeObject, defaultWriteObject и writeFields сначала завершают любой существующий блок данных.

Записи сериализуются иначе, чем обычные сериализуемые объекты и объекты Externalizable; см. раздел сериализация записей.

Начиная с версии:
1.1
Внешние спецификации
  • Спецификация сериализации объектов Java
См. также:
  • DataOutput
  • ObjectInputStream
  • Serializable
  • Externalizable
  • Спецификация сериализации объектов Java, раздел 2 «Классы вывода объектов»

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static class  ObjectOutputStream.PutField
Предоставляет программный доступ к постоянным полям, которые будут записаны в ObjectOutput.

Краткое описание полей

Поля, объявленные в интерфейсе ObjectStreamConstants

baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, SERIAL_FILTER_PERMISSION, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING

Краткое описание конструкторов

ObjectOutputStream()
ObjectOutputStream(OutputStream out)
Модификатор Конструктор Описание
protected
Предоставляет подклассам, полностью переопределяющим ObjectOutputStream, возможность не выделять память под закрытые данные, используемые только этой реализацией ObjectOutputStream.
Создает ObjectOutputStream, выполняющий запись в указанный OutputStream.

Краткое описание методов

Модификатор и тип Метод Описание
protected void annotateClass(Class<?> cl)
Подклассы могут реализовать этот метод, чтобы сохранять данные класса в потоке.
protected void annotateProxyClass(Class<?> cl)
Подклассы могут реализовать этот метод, чтобы сохранять в потоке пользовательские данные вместе с дескрипторами классов динамических прокси.
void close()
Закрывает поток.
void defaultWriteObject()
Записывает в этот поток нестатические и непреходящие поля текущего класса.
protected void drain()
Записывает все буферизованные данные в ObjectOutputStream.
protected boolean enableReplaceObject(boolean enable)
Позволяет потоку заменять объекты, записываемые в поток.
void flush()
Сбрасывает данные потока.
ObjectOutputStream.PutField putFields()
Возвращает объект, используемый для буферизации постоянных полей, которые необходимо записать в поток.
protected Object replaceObject(Object obj)
Этот метод позволяет доверенным подклассам ObjectOutputStream заменять один объект другим во время сериализации.
void reset()
Метод reset игнорирует состояние всех объектов, уже записанных в поток.
void useProtocolVersion(int version)
Задает версию протокола потока, используемую при его записи.
void write(byte[] buf)
Записывает массив байтов.
void write(byte[] buf, int off, int len)
Записывает часть массива байтов.
void write(int val)
Записывает байт.
void writeBoolean(boolean val)
Записывает логическое значение.
void writeByte(int val)
Записывает 8-битный байт.
void writeBytes(String str)
Записывает строку в виде последовательности байтов.
void writeChar(int val)
Записывает 16-битный символ.
void writeChars(String str)
Записывает строку в виде последовательности символов.
protected void writeClassDescriptor(ObjectStreamClass desc)
Записывает указанный дескриптор класса в ObjectOutputStream.
void writeDouble(double val)
Записывает 64-битное значение типа double.
void writeFields()
Записывает буферизованные поля в поток.
void writeFloat(float val)
Записывает 32-битное значение типа float.
void writeInt(int val)
Записывает 32-битное значение типа int.
void writeLong(long val)
Записывает 64-битное значение типа long.
final void writeObject(Object obj)
Записывает указанный объект в ObjectOutputStream.
protected void writeObjectOverride(Object obj)
Метод, используемый подклассами для переопределения метода writeObject по умолчанию.
void writeShort(int val)
Записывает 16-битное значение типа short.
protected void writeStreamHeader()
Метод writeStreamHeader предоставлен для того, чтобы подклассы могли добавлять собственный заголовок в начало или конец потока.
void writeUnshared(Object obj)
Записывает в ObjectOutputStream объект без совместного использования.
void writeUTF(String str)
Записывает примитивные данные этой строки в формате модифицированного UTF-8.

Методы, объявленные в классе OutputStream

nullOutputStream

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

ObjectOutputStream

public ObjectOutputStream(OutputStream out) throws IOException
Создает ObjectOutputStream, записывающий данные в указанный OutputStream. Этот конструктор записывает заголовок потока сериализации в базовый поток; вызывающим методам может потребоваться немедленно сбросить буфер потока, чтобы конструкторы принимающих ObjectInputStream не блокировались при чтении заголовка.
Параметры:
out - выходной поток для записи
Исключения:
IOException - если при записи заголовка потока произошла ошибка ввода-вывода
NullPointerException - если out имеет значение null
С момента:
1.4
См. также:
  • ObjectOutputStream()
  • putFields()
  • ObjectInputStream(InputStream)

ObjectOutputStream

protected ObjectOutputStream() throws IOException
Предоставляет подклассам, полностью переопределяющим ObjectOutputStream, возможность не выделять приватные данные, используемые только этой реализацией ObjectOutputStream.
Исключения:
IOException - если при создании этого потока произошла ошибка ввода-вывода

Подробное описание методов

useProtocolVersion

public void useProtocolVersion(int version) throws IOException
Указывает версию протокола потока, используемую при записи потока.

Этот метод предоставляет точку расширения, позволяющую текущей версии механизма сериализации записывать данные в формате, обратно совместимом с предыдущей версией формата потока.

Будут предприняты все усилия, чтобы избежать появления дополнительных несовместимостей с предыдущими версиями; однако иногда другого решения нет.

Параметры:
version - используйте ProtocolVersion из java.io.ObjectStreamConstants.
Исключения:
IllegalStateException - если вызван после сериализации каких-либо объектов.
IllegalArgumentException - если передана недопустимая версия.
IOException - если произошли ошибки ввода-вывода
С момента:
1.2
См. также:
  • ObjectStreamConstants.PROTOCOL_VERSION_1
  • ObjectStreamConstants.PROTOCOL_VERSION_2

writeObject

public final void writeObject(Object obj) throws IOException
Записывает указанный объект в ObjectOutputStream. Записываются класс объекта, сигнатура класса и значения нестатических и нетранзиентных полей класса и всех его суперклассов. Стандартную сериализацию класса можно переопределить с помощью методов writeObject и readObject. Объекты, на которые ссылается этот объект, записываются транзитивно, чтобы ObjectInputStream мог восстановить полный эквивалентный граф объектов.

Исключения возникают при проблемах с OutputStream и для классов, которые не следует сериализовать. Все исключения являются фатальными для OutputStream, который остается в неопределенном состоянии; вызывающий метод должен самостоятельно проигнорировать состояние потока или восстановить его.

Определено в:
writeObject в интерфейсе ObjectOutput
Параметры:
obj - объект для записи
Исключения:
InvalidClassException - проблема с классом, используемым при сериализации.
NotSerializableException - какой-либо сериализуемый объект не реализует интерфейс java.io.Serializable.
IOException - любое исключение, возникшее в базовом OutputStream.

writeObjectOverride

protected void writeObjectOverride(Object obj) throws IOException
Метод, который подклассы используют для переопределения стандартного метода writeObject. Этот метод вызывается доверенными подклассами ObjectOutputStream, создавшими ObjectOutputStream с помощью защищенного конструктора без аргументов. Ожидается, что подкласс предоставит переопределяющий метод с модификатором "final".
Параметры:
obj - объект для записи в базовый поток
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода
С момента:
1.2
См. также:
  • ObjectOutputStream()
  • writeObject(Object)

writeUnshared

public void writeUnshared(Object obj) throws IOException
Записывает «несовместно используемый» объект в ObjectOutputStream. Этот метод идентичен writeObject, за исключением того, что всегда записывает заданный объект в поток как новый уникальный объект (в отличие от обратной ссылки на ранее сериализованный экземпляр). В частности:
  • Объект, записанный с помощью writeUnshared, всегда сериализуется так же, как вновь появившийся объект (объект, который еще не записывался в поток), независимо от того, записывался ли он ранее.
  • Если writeObject используется для записи объекта, ранее записанного с помощью writeUnshared, предыдущая операция writeUnshared рассматривается как запись отдельного объекта. Иными словами, ObjectOutputStream никогда не будет создавать обратные ссылки на данные объекта, записанные вызовами writeUnshared.
Хотя запись объекта с помощью writeUnshared сама по себе не гарантирует уникальную ссылку на объект после десериализации, она позволяет определить один объект в потоке несколько раз, поэтому несколько вызовов readUnshared на стороне получателя не будут конфликтовать. Обратите внимание, что описанные выше правила применяются только к объекту верхнего уровня, записываемому с помощью writeUnshared, но не к транзитивно связанным с ним подобъектам в сериализуемом графе объектов.
Параметры:
obj - объект для записи в поток
Исключения:
NotSerializableException - если объект в сериализуемом графе не реализует интерфейс Serializable
InvalidClassException - если возникла проблема с классом сериализуемого объекта
IOException - если во время сериализации произошла ошибка ввода-вывода
С момента:
1.4

defaultWriteObject

public void defaultWriteObject() throws IOException
Записывает нестатические и нетранзиентные поля текущего класса в этот поток. Этот метод можно вызывать только из метода writeObject сериализуемого класса. В противном случае будет выброшено исключение NotActiveException.
Исключения:
IOException - если при записи в базовый OutputStream произошли ошибки ввода-вывода

putFields

public ObjectOutputStream.PutField putFields() throws IOException
Получает объект, используемый для буферизации сохраняемых полей, которые будут записаны в поток. Поля будут записаны в поток при вызове метода writeFields.
Возвращает:
экземпляр класса Putfield, содержащий сериализуемые поля
Исключения:
IOException - если произошли ошибки ввода-вывода
С момента:
1.2

writeFields

public void writeFields() throws IOException
Записывает буферизованные поля в поток.
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода
NotActiveException - вызывается, если метод writeObject класса не был вызван для записи состояния объекта.
С момента:
1.2

reset

public void reset() throws IOException
Метод reset отменяет состояние всех объектов, уже записанных в поток. Состояние сбрасывается до состояния нового ObjectOutputStream. Текущая позиция в потоке помечается как точка сброса, чтобы соответствующий ObjectInputStream сбросился в той же точке. Объекты, ранее записанные в поток, больше не будут считаться уже присутствующими в потоке. Они будут записаны в поток повторно.
Исключения:
IOException - если reset() вызван во время сериализации объекта.

annotateClass

protected void annotateClass(Class<?> cl) throws IOException
Подклассы могут реализовать этот метод, чтобы сохранять данные класса в потоке. По умолчанию этот метод ничего не делает. Соответствующий метод в ObjectInputStream — resolveClass. Этот метод вызывается ровно один раз для каждого уникального класса в потоке. Имя и сигнатура класса к этому моменту уже записаны в поток. Этот метод может свободно использовать ObjectOutputStream для сохранения любого представления класса, которое сочтет подходящим (например, байтов файла класса). Метод resolveClass соответствующего подкласса ObjectInputStream должен считывать и использовать любые данные или объекты, записанные методом annotateClass.
Параметры:
cl - класс, для которого следует добавить пользовательские данные
Исключения:
IOException - любое исключение, возникшее в базовом OutputStream.

annotateProxyClass

protected void annotateProxyClass(Class<?> cl) throws IOException
Подклассы могут реализовать этот метод, чтобы сохранять в потоке пользовательские данные вместе с дескрипторами динамических прокси-классов.

Этот метод вызывается ровно один раз для каждого уникального дескриптора прокси-класса в потоке. Реализация этого метода по умолчанию в ObjectOutputStream ничего не делает.

Соответствующий метод в ObjectInputStream — resolveProxyClass. Для заданного подкласса ObjectOutputStream, переопределяющего этот метод, метод resolveProxyClass соответствующего подкласса ObjectInputStream должен считывать любые данные или объекты, записанные методом annotateProxyClass.

Параметры:
cl - прокси-класс, для которого следует добавить пользовательские данные
Исключения:
IOException - любое исключение, возникшее в базовом OutputStream
С момента:
1.3
См. также:
  • ObjectInputStream.resolveProxyClass(String[])

replaceObject

protected Object replaceObject(Object obj) throws IOException
Этот метод позволяет доверенным подклассам ObjectOutputStream подменять один объект другим во время сериализации. Подмена объектов отключена до вызова enableReplaceObject. Метод enableReplaceObject проверяет, можно ли доверять потоку, запрашивающему подмену. Первое вхождение каждого объекта, записываемого в поток сериализации, передается методу replaceObject. При последующих ссылках на объект используется объект, возвращенный первоначальным вызовом replaceObject. Чтобы гарантировать, что приватное состояние объектов не будет случайно раскрыто, использовать replaceObject могут только доверенные потоки.

Метод ObjectOutputStream.writeObject принимает параметр типа Object (а не Serializable), чтобы можно было заменять несериализуемые объекты сериализуемыми.

При подмене объектов подкласс должен обеспечить либо выполнение соответствующей подмены при десериализации, либо совместимость подставленного объекта с каждым полем, в котором будет храниться ссылка. Объекты, тип которых не является подтипом типа поля или элемента массива, прерывают сериализацию с выбросом исключения и не сохраняются.

Этот метод вызывается только один раз при первом обнаружении каждого объекта. Все последующие ссылки на объект будут перенаправлены на новый объект. Этот метод должен возвращать объект, которым следует заменить исходный, либо исходный объект.

В качестве объекта для подмены можно вернуть null, однако это может привести к возникновению NullPointerException в классах, содержащих ссылки на исходный объект, если они ожидают объект, а не null.

Параметры:
obj - объект для замены
Возвращает:
альтернативный объект, заменивший указанный объект
Исключения:
IOException - любое исключение, возникшее в базовом OutputStream.

enableReplaceObject

protected boolean enableReplaceObject(boolean enable)
Разрешает потоку подменять записываемые в него объекты. Если подмена включена, метод replaceObject(Object) вызывается для каждого сериализуемого объекта.
Параметры:
enable - true, чтобы разрешить использование replaceObject для каждого сериализуемого объекта
Возвращает:
предыдущее значение настройки перед вызовом этого метода

writeStreamHeader

protected void writeStreamHeader() throws IOException
Метод writeStreamHeader предоставлен для того, чтобы подклассы могли добавлять собственный заголовок в начало или конец потока. Он записывает в поток магическое число и версию.
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

writeClassDescriptor

protected void writeClassDescriptor(ObjectStreamClass desc) throws IOException
Записывает указанный дескриптор класса в ObjectOutputStream. Дескрипторы классов используются для идентификации классов объектов, записываемых в поток. Подклассы ObjectOutputStream могут переопределить этот метод, чтобы настроить способ записи дескрипторов классов в поток сериализации. В таком случае следует переопределить соответствующий метод в ObjectInputStream — readClassDescriptor, — чтобы восстановить дескриптор класса из его пользовательского представления в потоке. По умолчанию этот метод записывает дескрипторы классов в соответствии с форматом, определенным в Спецификации сериализации объектов Java.

Обратите внимание, что этот метод вызывается только в том случае, если ObjectOutputStream не использует старый формат потока сериализации (который устанавливается вызовом метода useProtocolVersion класса ObjectOutputStream). Если в этом потоке сериализации используется старый формат (PROTOCOL_VERSION_1), дескриптор класса будет записан внутренним способом, который нельзя переопределить или настроить.

Параметры:
desc - дескриптор класса для записи в поток
Исключения:
IOException - если произошла ошибка ввода-вывода.
С момента:
1.3
Внешние спецификации
  • Спецификация сериализации объектов Java
См. также:
  • ObjectInputStream.readClassDescriptor()
  • useProtocolVersion(int)
  • ObjectStreamConstants.PROTOCOL_VERSION_1

write

public void write(int val) throws IOException
Записывает байт. Этот метод блокирует выполнение до фактической записи байта.
Определено в:
write в интерфейсе DataOutput
Определено в:
write в интерфейсе ObjectOutput
Определено в:
write в классе OutputStream
Параметры:
val - байт для записи в поток
Исключения:
IOException - если произошла ошибка ввода-вывода.

write

public void write(byte[] buf) throws IOException
Записывает массив байтов. Этот метод блокирует выполнение до фактической записи байтов.
Определено в:
write в интерфейсе DataOutput
Определено в:
write в интерфейсе ObjectOutput
Переопределяет:
write в классе OutputStream
Параметры:
buf - записываемые данные
Исключения:
IOException - если произошла ошибка ввода-вывода.
См. также:
  • OutputStream.write(byte[], int, int)

write

public void write(byte[] buf, int off, int len) throws IOException
Записывает часть массива байтов.
Определено в:
write в интерфейсе DataOutput
Определено в:
write в интерфейсе ObjectOutput
Переопределяет:
write в классе OutputStream
Параметры:
buf - записываемые данные
off - начальное смещение в данных
len - количество записываемых байтов
Исключения:
IOException - если произошла ошибка ввода-вывода. В частности, выбрасывается IOException, если выходной поток закрыт.
IndexOutOfBoundsException - если off отрицательно, len отрицательно или len больше b.length - off

flush

public void flush() throws IOException
Сбрасывает буфер потока. При этом все буферизованные выходные байты записываются, а сброс передается базовому потоку.
Определено в:
flush в интерфейсе Flushable
Определено в:
flush в интерфейсе ObjectOutput
Переопределяет:
flush в классе OutputStream
Исключения:
IOException - если произошла ошибка ввода-вывода.

drain

protected void drain() throws IOException
Выводит все буферизованные данные из ObjectOutputStream. Действует подобно flush, но не передает сброс базовому потоку.
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

close

public void close() throws IOException
Закрывает поток. Этот метод необходимо вызвать, чтобы освободить все ресурсы, связанные с потоком.
Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Closeable
Определено в:
close в интерфейсе ObjectOutput
Переопределяет:
close в классе OutputStream
Исключения:
IOException - если произошла ошибка ввода-вывода.

writeBoolean

public void writeBoolean(boolean val) throws IOException
Записывает логическое значение.
Определено в:
writeBoolean в интерфейсе DataOutput
Параметры:
val - записываемое логическое значение
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

writeByte

public void writeByte(int val) throws IOException
Записывает 8-битный байт.
Определено в:
writeByte в интерфейсе DataOutput
Параметры:
val - записываемое значение байта
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

writeShort

public void writeShort(int val) throws IOException
Записывает 16-битное короткое целое число.
Определено в:
writeShort в интерфейсе DataOutput
Параметры:
val - записываемое короткое целое значение
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

writeChar

public void writeChar(int val) throws IOException
Записывает 16-битный символ.
Определено в:
writeChar в интерфейсе DataOutput
Параметры:
val - записываемое значение символа
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

writeInt

public void writeInt(int val) throws IOException
Записывает 32-битное целое число.
Определено в:
writeInt в интерфейсе DataOutput
Параметры:
val - записываемое целочисленное значение
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

writeLong

public void writeLong(long val) throws IOException
Записывает 64-битное длинное целое число.
Определено в:
writeLong в интерфейсе DataOutput
Параметры:
val - записываемое длинное целое значение
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

writeFloat

public void writeFloat(float val) throws IOException
Записывает 32-битное число с плавающей точкой.
Определено в:
writeFloat в интерфейсе DataOutput
Параметры:
val - записываемое значение типа float
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

writeDouble

public void writeDouble(double val) throws IOException
Записывает 64-битное число двойной точности.
Определено в:
writeDouble в интерфейсе DataOutput
Параметры:
val - записываемое значение типа double
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

writeBytes

public void writeBytes(String str) throws IOException
Записывает строку в виде последовательности байтов.
Определено в:
writeBytes в интерфейсе DataOutput
Параметры:
str - строка байтов для записи
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

writeChars

public void writeChars(String str) throws IOException
Записывает строку в виде последовательности символов.
Определено в:
writeChars в интерфейсе DataOutput
Параметры:
str - строка символов для записи
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

writeUTF

public void writeUTF(String str) throws IOException
Записывает примитивные данные этой строки в формате модифицированного UTF-8. Обратите внимание на существенное различие между записью строки в поток как примитивных данных и записью ее как объекта. Экземпляр String, записанный методом writeObject, сначала записывается в поток как строка. При последующих вызовах writeObject() в поток записываются ссылки на эту строку.
Определено в:
writeUTF в интерфейсе DataOutput
Параметры:
str - строка для записи
Исключения:
IOException - если при записи в базовый поток произошли ошибки ввода-вывода

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/ObjectOutputStream.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API