Сохранить MSG-вложение в виде файла в Java - PullRequest
0 голосов
/ 13 января 2019

Я использую API msgparser 1.1.15.

При разборе MSG я получаю MSG в качестве вложения. Я хочу сохранить это MSG-вложение в виде файла, но у объекта MsgAttachment нет метода для возврата данных в виде byte [].

Итак, я пытаюсь преобразовать объект в поток вывода байтового массива, а затем пытаюсь записать в файл. Даже в этом случае MsgAttachment возвращает объект Message, который не реализует интерфейс Serializable, что приводит к исключению NotSerializableException.

Я получаю вложение .msg, как показано ниже (псевдокод):

if(attachment instanceof MsgAttachment){
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);

    MsgAttachment msgAttachment = (MsgAttachment) attachment;
    Message message = msgAttachment.getMessage();

    oos.writeObject(message);
    oos.flush();
    oos.close();
    InputStream in = new ByteArrayInputStream(baos.toByteArray());
}

Я получаю NotSerializableException в этой строке oos.writeObject(message);, потому что com.auxilii.msgparser.Message не реализует интерфейс Serializable, и его нельзя изменить, потому что это класс библиотеки.

Я исследовал и нашел эту опцию, чтобы попытаться решить. Msgstr "Создать класс-оболочку, расширяющий Message и реализующий Serializable, затем самостоятельно реализовать writeObject (...) и readObject (...)."

Вопрос в том, что я реализую в методах writeObject и readObject? Стоит ли сериализовать каждое свойство в объекте Message или есть более простой способ?

Кроме того, есть ли лучший способ решить основную проблему?

Спасибо за чтение и высоко ценим вашу помощь.

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