Используйте ObjectOutputStream и FileOutputStream с FileWriter - PullRequest
0 голосов
/ 17 января 2011

Есть ли способ использовать ObjectOutputStream, например:

<tag>output of the ObjectOutputStream</tag>

Если я попытаюсь:

FileOutputStream fos = new FileOutputStream(filename);
ObjectOutputStream oos = new ObjectOutputStream(fos);
FileWriter fw = new FileWriter(fos);

И например:

fw.write("<tag>");
oos.write(cool_object);
fw.wrote("</tag>");

Я не получаю этот результат.Кажется, ObjectOutputStream перезаписывает файл полностью каждый раз.

Ответы [ 3 ]

4 голосов
/ 17 января 2011

Нет - FileWriter предназначен для записи текста , но вывод ObjectOutputStream является неотъемлемо двоичными данными.Если вы хотите сериализовать объекты в XML, используйте сериализатор, который знает о XML, например XStream .

1 голос
/ 17 января 2011

попробуйте следующий двоичный вывод.

oos.writeObject("<tag>");
oos.writeObject(cool_object);
oos.writeObject("</tag>");

ИЛИ текстовый вывод

fw.write("<tag>"+cool_object+"</tag>");

РЕДАКТИРОВАТЬ: Вам может понадобиться закодировать вывод cool_object.toString (), если он содержит и HTMLспециальные символы.

1 голос
/ 17 января 2011

ObjectOutputStream создает двоичное представление.Таким образом, вы должны сначала превратить это в строковое представление - либо в шестнадцатеричное, либо в Base64

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
String str = Base64.encodeBase64(baos.toByteArray());

, а затем написать это str между тегами.

Если вы хотите xml-представление, а недвоичное представление, тогда вы можете использовать XMLEncoder, который является XML-версией ObjectOutputStream

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...