Spec-Zone.ru › OpenJDK 24

Класс 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.

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

Например, чтобы записать объект, который можно прочитать с помощью примера в 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
     }

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

    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. Объекты несут ответственность за обработку любой версии, которая происходит.

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

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

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

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

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

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

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

Поля, объявленные в интерфейсе java.io.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()
Сброс проигнорирует состояние любых объектов, уже записанных в поток.
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-битовое значение с плавающей запятой двойной точности.
void writeFields()
Записывает буферизованные поля в поток.
void writeFloat(float val)
Записывает 32-битовое значение с плавающей запятой одинарной точности.
void writeInt(int val)
Записывает 32-битовое целое число.
void writeLong(long val)
Записывает 64-битовое целое число.
final void writeObject(Object obj)
Записывает указанный объект в ObjectOutputStream.
protected void writeObjectOverride(Object obj)
Метод, используемый подклассами для переопределения метода writeObject по умолчанию.
void writeShort(int val)
Записывает 16-битовое короткое целое число.
protected void writeStreamHeader()
Метод writeStreamHeader предоставляется для того, чтобы подклассы могли добавлять или вставлять собственные заголовки в поток.
void writeUnshared(Object obj)
Записывает "непостоянный" объект в ObjectOutputStream.
void writeUTF(String str)
Запись примитивных данных этой строки в формате измененного UTF-8.

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

nullOutputStream

Методы, объявленные в классе java.lang.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 - версия протокола из 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
Метод, используемый подклассами для переопределения метода default 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.

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

replaceObject

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

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

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

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

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

Parameters:
obj - объект, который нужно заменить
Returns:
альтернативный объект, заменивший указанный
Throws:
IOException - Любое исключение, сгенерированное базовым потоком OutputStream.

enableReplaceObject

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

writeStreamHeader

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

writeClassDescriptor

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

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

Parameters:
desc - дескриптор класса, который нужно записать в поток
Throws:
IOException - Если произошла ошибка ввода-вывода.
Since:
1.3
External Specifications
  • Спецификация сериализации Java-объектов
See Also:
  • ObjectInputStream.readClassDescriptor()
  • useProtocolVersion(int)
  • ObjectStreamConstants.PROTOCOL_VERSION_1

write

public void write(int val) throws IOException
Записывает байт. Этот метод будет блокировать, пока байт не будет записан.
Specified by:
write в интерфейсе DataOutput
Specified by:
write в интерфейсе ObjectOutput
Specified by:
write в классе OutputStream
Parameters:
val - байт, который нужно записать в поток
Throws:
IOException - Если произошла ошибка ввода-вывода.

write

public void write(byte[] buf) throws IOException
Записывает массив байтов. Этот метод будет блокировать, пока байты не будут записаны.
Specified by:
write в интерфейсе DataOutput
Specified by:
write в интерфейсе ObjectOutput
Overrides:
write в классе OutputStream
Parameters:
buf - данные для записи
Throws:
IOException - Если произошла ошибка ввода-вывода.
See Also:
  • OutputStream.write(byte[], int, int)

write

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

flush

public void flush() throws IOException
Очищает поток. Это запишет все буферизованные выходные байты и осуществит очистку в базовом потоке.
Specified by:
flush в интерфейсе Flushable
Specified by:
flush в интерфейсе ObjectOutput
Overrides:
flush в классе OutputStream
Throws:
IOException - если произошла ошибка ввода-вывода.

drain

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

close

public void close() throws IOException
Закрывает поток. Этот метод должен быть вызван для освобождения всех ресурсов, связанных с потоком.
Specified by:
close в интерфейсе AutoCloseable
Specified by:
close в интерфейсе Closeable
Specified by:
close в интерфейсе ObjectOutput
Overrides:
close в классе OutputStream
Throws:
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-битовое значение char.
Указано в:
writeChar в интерфейсе DataOutput
Параметры:
val - значение char для записи
Исключения:
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 - значение числа с плавающей точкой для записи
Исключения:
IOException - если при записи в базовый поток возникают ошибки ввода-вывода

writeDouble

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/io/ObjectOutputStream.html

Spec-Zone.ru

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