Java Zip圧縮後、元ファイルが削除できない
JavaでZip圧縮する際に少しハマったので備忘録
csvやpdfの一時ファイルを作成した後、zipファイルを作成
zip作成後に一時ファイルを削除しようとしたら削除できず、Java VMがずっとファイルを握っている状態になっていた
InputStreamをクローズするのではなく、InputStreamに渡したFileInputStreamを直接クローズしてやる必要があるみたい
/** * Zipファイル生成 * @param zos ストリーム * @param files 書き込みファイル * @param charset 文字コード * @throws IOException IO例外 */ private void compressZip(ZipOutputStream zos, List<File> files, String charset) throws IOException { // 圧縮レベル設定 zos.setLevel(5); // 文字コードを指定 zos.setEncoding(charset); byte[] buf = new byte[1024]; InputStream is = null; try { for (File file : files) { ZipEntry entry = new ZipEntry(file.getName()); zos.putNextEntry(entry); FileInputStream fis = new FileInputStream(file); is = new BufferedInputStream(fis); int len = 0; while ((len = is.read(buf)) != -1) { zos.write(buf, 0, len); } IOUtils.closeQuietly(fis); // ← newしたFileInputStreamを直接クローズする } } finally { IOUtils.closeQuietly(is); } }
関連記事
-
WordPressでモバイルの時はサイドウィジェットを非表示にしたい
私のブログ重すぎ・・・!? 外出先でモバイルから自分のブログ見るとサイドに置いて …
-
Raspberry Pi ZEROでGW-450D2(無線LANドングル)を使う
ZERO買っちゃった Pimoroniで入荷しているのを見たのでRaspberr …
-
RaspberryPi2を使ったリモートのエサやりボタン復活しました
春がきた 春になり水温が上がってきたのでプラ舟ページのエサやりボタンを復活させま …
-
Raspberry Pi ZERO + L-03D + IIJmioを使ってネットに接続する
野外のソーラーパネル&ラズパイからネットに繋ぎたい ソーラーパネルで給 …
-
Raspberry Pi2でPlanexのGW-450Dが動かなくなった
Raspberry Pi2上で何も考えずソフト類をアップグレードしたらカーネルの …
Comment
初めまして。
zipファイルの扱い方について、勉強させていただきます!