Я пытаюсь записать содержимое списка (объекта) на диск с помощью ObjectOutputStream.Запись объекта из списка в файл с использованием ObjectOutputStream
Это соответствующий код:
//Input Filetype is .xlsx with an embedded File (also .xlsx), Output Filetype should be .xlsx (Type of embedded File)
//This code should save the embedded File to D:\\...
List<HSSFObjectData> extrList = new ArrayList<HSSFObjectData>();
HSSFWorkbook embeddedWorkbook = new HSSFWorkbook(pPart.getInputStream());
extrList = embeddedWorkbook.getAllEmbeddedObjects();
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\scan_temp\\emb.xlsx"));
oos.writeObject(extrList);
oos.flush();
oos.close();
Этот код создает файл с именем emb.xlsx, но содержание не то, что я ожидал. Если я попытаюсь открыть с помощью блокнота, это что-то вроде:
¬í sr java.util.ArrayListxÒ™Ça I sizexp w x
Что я здесь делаю неправильно? Спасибо за любую помощь.
Спасибо за ваш ответ. Поэтому, если мои данные хранятся в виде двоичного файла. Возможно ли сохранить встроенный файл (xlsx) в исходном формате данных с помощью ObjectOutputStream? Можете ли вы показать мне пример кода, как это сделать? Большое спасибо! – Nicola
'ObjectOutputStream' ничего не хранит в исходном формате. Он хранит его в соответствии с протоколом сериализации, определенным в спецификации Serialization Object. Вам нужно еще раз взглянуть на API POI, чтобы сохранить объекты электронных таблиц как '.xlsx'. Сериализация не сделает это за вас. – EJP
Хорошо, я просто понял, что мой код был неправильным во всех отношениях. :) ObjectOutputStream в моем случае не помогает. – Nicola