Класс 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:
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(12345);
oos.writeObject("Today");
oos.writeObject(new Date());
oos.close(); Классы, требующие специальной обработки во время процесса сериализации и десериализации, должны реализовывать специальные методы с этими точными сигнатурами:
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
- См. также:
-
DataOutput,ObjectInputStream,Serializable,Externalizable, Спецификация сериализации объектов, раздел 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 Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | ObjectOutputStream() | Предоставляет способ для подклассов, которые полностью переопределяют ObjectOutputStream, не выделять частные данные, используемые только в этом реализации ObjectOutputStream. |
ObjectOutputStream(OutputStream out) | Создает 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 бита. |
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 не будут блокироваться при чтении заголовка.
Если установлен менеджер безопасности, этот конструктор проверит «enableSubclassImplementation» SerializablePermission при вызове непосредственно или косвенно конструктором подкласса, который переопределяет методы ObjectOutputStream.putFields или ObjectOutputStream.writeUnshared.
- Параметры:
-
out- поток вывода для записи - Исключения:
-
IOException- если при записи заголовка потока произошла ошибка ввода-вывода -
SecurityException- если недоверенный подкласс незаконно переопределяет методы, чувствительные к безопасности -
NullPointerException- еслиoutявляетсяnull - С момента:
- 1.4
- См. также:
-
ObjectOutputStream(),putFields(),ObjectInputStream(InputStream)
ObjectOutputStream
protected ObjectOutputStream()
throws IOException,
SecurityException Предоставляет способ для подклассов, полностью переопределяющих ObjectOutputStream, не выделять частные данные, используемые только этой реализацией ObjectOutputStream.
Если установлен менеджер безопасности, этот метод сначала вызывает метод checkPermission менеджера безопасности с разрешением SerializablePermission("enableSubclassImplementation") для обеспечения возможности включения подклассов.
- Исключения:
-
SecurityException- если менеджер безопасности существует и его методcheckPermissionзапрещает включение подклассов. -
IOException- если при создании потока произошла ошибка ввода-вывода - См. также:
-
SecurityManager.checkPermission(java.security.Permission),SerializablePermission
Методы
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 по умолчанию. Этот метод вызывается надёжными подклассами ObjectInputStream, которые построили ObjectInputStream, используя защищённый конструктор без аргументов. От подкласса ожидается предоставить метод с модификатором "final".
- Параметры:
-
obj- объект, подлежащий записи в базовый поток - Исключения:
-
IOException- если возникают ошибки ввода-вывода при записи в базовый поток - С:
- 1.2
- См. также:
-
ObjectOutputStream(),writeObject(Object)
writeUnshared
public void writeUnshared(Object obj)
throws IOException Записывает объект "без общих ссылок" в ObjectOutputStream. Этот метод идентичен writeObject, за исключением того, что всегда записывает данный объект как новый, уникальный объект в потоке (в отличие от обратной ссылки на ранее сериализованный экземпляр). Конкретно:
- Объект, записанный с помощью writeUnshared, всегда сериализуется так же, как новый объект (объект, который ещё не был записан в поток), независимо от того, был ли он записан ранее.
- Если writeObject используется для записи объекта, который был ранее записан с помощью writeUnshared, предыдущая операция writeUnshared обрабатывается так, как будто это запись отдельного объекта. Другими словами, ObjectOutputStream никогда не будет генерировать обратные ссылки на данные объекта, записанные вызовами writeUnshared.
Подклассы ObjectOutputStream, которые переопределяют этот метод, могут быть созданы только в контекстах безопасности, обладающих разрешением "enableSubclassImplementation" SerializablePermission; любая попытка создать такой подкласс без этого разрешения приведёт к исключению SecurityException.
- Параметры:
-
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 в качестве заменяемого объекта, но это может привести к NullReferenceException в классах, содержащих ссылки на исходный объект, так как они могут ожидать объект, а не null.
- Параметры:
-
obj- объект, подлежащий замене - Возвращает:
- альтернативный объект, заменивший указанный
- Исключения:
-
IOException- Любое исключение, сгенерированное базовым OutputStream.
enableReplaceObject
protected boolean enableReplaceObject(boolean enable)
throws SecurityException Включает возможность замены объектов, записанных в поток. При включении, метод replaceObject(java.lang.Object) вызывается для каждого сериализуемого объекта.
Если замена объектов в данный момент не включена, и enable имеет значение true, и установлен менеджер безопасности, то этот метод сначала вызывает метод менеджера безопасности checkPermission с разрешением SerializablePermission("enableSubstitution"), чтобы убедиться, что вызывающий элемент имеет разрешение включить замену объектов, записываемых в поток.
- Параметры:
-
enable- true для включения использованияreplaceObjectдля каждого сериализуемого объекта - Возвращает:
- предыдущее значение до вызова этого метода
- Исключения:
-
SecurityException- если менеджер безопасности существует и его методcheckPermissionзапрещает включение замены объектов, записываемых в поток. - См. также:
-
SecurityManager.checkPermission(java.security.Permission),SerializablePermission
writeStreamHeader
protected void writeStreamHeader()
throws IOException Метод writeStreamHeader предоставляется, чтобы подклассы могли добавлять или вставлять собственный заголовок в поток. Он записывает магическое число и версию в поток.
- Исключения:
-
IOException- если при записи в базовый поток возникают ошибки ввода-вывода
writeClassDescriptor
protected void writeClassDescriptor(ObjectStreamClass desc)
throws IOException Записывает указанный описатель класса в ObjectOutputStream. Описатели классов используются для идентификации классов объектов, записанных в поток. Подклассы ObjectOutputStream могут переопределять этот метод, чтобы настроить способ записи описателей классов в поток сериализации. Соответствующий метод в ObjectInputStream, readClassDescriptor, должен затем быть переопределен для восстановления описателя класса из его пользовательского представления потока. По умолчанию этот метод записывает описатели классов в соответствии с форматом, определенным в спецификации Object Serialization.
Обратите внимание, что этот метод будет вызван только в том случае, если ObjectOutputStream не использует старый формат потока сериализации (установленный путем вызова метода ObjectOutputStream useProtocolVersion). Если этот поток сериализации использует старый формат (PROTOCOL_VERSION_1), описатель класса будет записан во внутреннем формате, который нельзя переопределить или настроить.
- Параметры:
-
desc- описатель класса, который нужно записать в поток - Исключения:
-
IOException- если произошла ошибка ввода-вывода. - С:
- 1.3
- См. также:
-
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- если произошла ошибка ввода-вывода.
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- значение числа с плавающей точкой, которое нужно записать - Исключения:
-
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, 2020, 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/11/docs/api/java.base/java/io/ObjectOutputStream.html