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
私はここで間違っていますか?助けてくれてありがとう。
あなたの答えをありがとう。したがって、私のデータがバイナリファイルとして保存されていれば.. ObjectOutputStreamを使って埋め込みファイル(xlsx)を元のデータフォーマットで保存することも可能ですか?どのようにサンプルコードを表示することができますか?どうもありがとうございました! – Nicola
'ObjectOutputStream'は何も元の形式で保存しません。これは、オブジェクト直列化仕様で定義されている直列化プロトコルに従って格納します。スプレッドシートオブジェクトを '.xlsx'として保存する方法については、POI APIをもう一度見てみる必要があります。シリアライゼーションはあなたのためにそれを行いません。 – EJP
さて、私は自分のコードがあらゆる点で間違っていたことに気がつきました。 :)私の場合、ObjectOutputStreamは役に立ちません。 – Nicola