ZIPを作成し、保存ダイアログを出したいですが、作成中のcloseEntryを何回か呼び出すうちに、ZipOutputStreamがcloseされているのか途中で保存ダイアログが出てしまっていて、困っています。
ZipOutputStreamはjava.util.zip以下を使用しています。
Java
1// HTTPヘッダの設定後 2 3ServletOutputStream sos = response.getOutputStream(); 4ZipOutputStream zos = new ZipOutputStream(sos, Charset.forName("Shift-JIS"); 5 6for(取得したファイルのぶんだけループ){ 7 zos.putNextEntry(new ZipEntry("フォルダ名/" + 取得したファイル名)); 8 9 try(InputStream is = 取得したファイル) { 10 byte[] buffer = new byte[1024]; 11 int readLength = 0; 12 while((readLength = is.read(buffer)) != -1) { 13 zos.write(buffer, 0, readLength); 14 } 15 } 16 zos.closeEntry(); // 数回繰り返しているうちに、ここでzosをcloseしているのか、画面に保存ダイアログが表示される 17} 18zos.close(); 19
zos.closeEntry();を記述しなかった場合、zos.putNextEntryで同様の事象が発生します。
ファイルが2個くらいなら発生しないのですが、4個くらいから確実に発生しています。
見づらくてすみませんが、何か分かる方教えてくださいますと幸いです。
回答1件
あなたの回答
tips
プレビュー