Предположим, у меня есть OutputStream
(, а неObjectOutputStream
). Можно ли отправить сериализованный объект с помощью метода записи? Благодаря!Сериализуйте объект с выходным потоком
ответ
вот что вы делаете для сериализации объекта
new ObjectOutputStream(outputStream).writeObject(obj);
, если вы хотите, чтобы контролировать этот байт [] Выходной
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(buffer);
oos.writeObject(obj);
oos.close();
byte[] rawData = buffer.toByteArray();
пс. thx для комментариев ниже, отредактировано соответственно
Вы также должны добавить некоторый описательный текст, чтобы это был не только правильный ответ, но и _good_ one. –
Вам нужно 'writeObject()', а не 'write()'. И вызов 'flush()' был бы полезен. –
Вам необходимо использовать класс ObjectOutputStream и его методы для *serialize*
объектов. Фактически ObjectOutputStream
является подклассом java.io.OutputStream
(Это абстрактный суперкласс байт-ориентированных потоков). Посмотрите на статью о Java Serialization API.
EDIT: Вы можете использовать XMLEncoder
(от Doc: Класс XMLEncoder является дополнительной альтернативой ObjectOutputStream и могут использоваться для создания представления текстового из JavaBean таким же образом, что ObjectOutputStream может быть использован для создания двоичного представления Serializable объектов)
Существует несколько способов сериализации объекта; вам не нужно использовать ObjectOutputStream – Hachi
Вы можете использовать ObjectOutputStream для «захвата» данных объектов в массиве байтов и отправки их в OutputStream.
String s = "test";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(s);
byte[] byteArray = baos.toByteArray();
for (byte b : byteArray) {
System.out.print((char) b);
}
Другим необязательным вариантом является сериализация объекта в строчном представлении, например. CSV
Это тривиально: вы можете просто обернуть оригинальный OutputStream
в новом ObjectOutputStream
, а затем использовать специализированные методы ObjectOutputStream
:
OutputStream myOriginalOutputStream = ...;
ObjectOutputStream oos = new ObjectOutputStream(myOriginalOutputStream);
oos.writeObject(new MyObject());
oos.flush();
oos.close();
Внутри ObjectOutputStream
будет вызывать write()
метод основные OutputStream
«ы.
вы можете записывать любые данные с помощью OutputStream. проще всего сделать байт [] вашего объекта. – Hachi