Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。650件3オブジェクトをObjectOutputStreamで書き出してJarOutputStreamでJarファイルにて、そのJarファイルをJarInputStreamで読み込んでObjectInputStreamのコンストラクターを呼び出したところで例外が飛んできます...以下のようなことをしていますが、どうにも成功しません。出力1オブジェクトをObjectOutputStreamで一時出力2出力された一時ファイルをObjectInputStreamで読み込む3ストリームからbyte[]を取得4JarOutputStreamで書き出し圧縮しなければ問題ないので、1と2に問題はないかと...具体的には//一時ファイル書き出しは省略//tempFileは書き出した場所とおなじFileクラス。*///テスト時はファイルいっこだけで試してみました。}出力自体は成功してるように思います。出力されたファイル内のtestが格納されており、ファイルサイズがもとの一時ファイルと一致しているので...CRCがメタデータなのか、ファイルに含まれるのか、よくわからないのでそこが原因かもしれませんが...読み込み1指定されたファイル(ここでは上記したファイルを読み込む)をJarInputStreamで読み込む2.getNextJarEntry()を使ってJarEntryを取得(ファイルは正しいものとして進めさせてください。実際圧縮しなければ読み込めました。504B0304という例外が同じところで飛んできます。あとなんかハイライトされなんですけど、私が悪いんでしょうか(^_^;)バイト列を用いることで解決しました。ObjectInput(tempFile);//読み込むこの部分のObjectInputメソッドの戻り値objectDataを、例えば次のようなメソッドで出力してみるとわかりますが、想定されたように読み込まれていません。(おそらく全て0で出力されると思います。}}つまりObjectInputメソッドの実装に問題があります(ので、「圧縮しなければ問題ない」というのは何か勘違いをされているかと)。ここでやりたいのは、ファイルをバイト列として読み込みたいだけなので、ObjectInputStreamではなくFileInputStreamが適切だと思います。したがって、ObjectInputメソッドは次のように実装することになります。data;}「バイト列を用いることで解決しました」というのがよく理解できなかったのですが、こちらの書き込みから想像するに、一時ファイルの作成をやめた(ObjectInputを使用しなくなった)ということですかね。確かにこの処理自体不要です。そんなわけで経緯をよく理解できていないのですが、オブジェクトをjarファイルに出力したいのであれば、あまり深く考えずに、そういうストリームを構築すれば良いのでは無いかと思います。FileOutputStream(file)));...としたいところですが、このままですとJarOutputStreamの作法に従っていないというエラーが出ますのでその部分を修正します。すると以下のcompressメソッドのような感じになるかと思います。(また、本件タイトルに沿った「Javaで圧縮したファイルを解凍してオブジェクトとして読み込む」メソッドがdecompressです。}}上記は無圧縮jarではないですが、敢えて圧縮しないのであればわざわざJarOutputStreamを使わず直接FileOutputStreamを使うのが楽だと思います。全体はここに挿入するには長くなってしまったので外部サイト(gist)に置いています。どっちかというと、OutputStreamとかのコンストラクターにOutputStreamを渡す意味が分かっていなかったかなーと思います。勉強になりました、ありがとうございます。ソースコード助かりました。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。ArrayListのオブジェクトの種類を特定するには?9何故Javaでは多重継承は許されていないのか2Javaで、バイナリやテキストファイルをStringへ読み込む方法0ファイルに書き込んだオブジェクトを全て読み込みたいが、先頭にある1つ目しか読み込むことができない1Javaのオブジェクトのソートについて1Javaのオブジェクトを漢字の読みのあいうえお順でソートしたい0Javaでcsvファイルを読み込み、編集、別ファイルに書き込みたい0JavaでCSVファイルの読み込みと類似する文字のアウトプットをしたい。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。