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);
}
}
関連記事
-
-
RaspberryPi2を使ったリモートのエサやりボタン復活しました
春がきた 春になり水温が上がってきたのでプラ舟ページのエサやりボタンを復活させま …
-
-
Raspberry Pi2でPlanexのGW-450Dが動かなくなった
Raspberry Pi2上で何も考えずソフト類をアップグレードしたらカーネルの …
-
-
Raspberry Pi ZERO + L-03D + IIJmioを使ってネットに接続する
野外のソーラーパネル&ラズパイからネットに繋ぎたい ソーラーパネルで給 …
-
-
Raspberry Pi ZEROでGW-450D2(無線LANドングル)を使う
ZERO買っちゃった Pimoroniで入荷しているのを見たのでRaspberr …
-
-
WordPressでモバイルの時はサイドウィジェットを非表示にしたい
私のブログ重すぎ・・・!? 外出先でモバイルから自分のブログ見るとサイドに置いて …

Comment
初めまして。
zipファイルの扱い方について、勉強させていただきます!