本文實(shí)例為大家分享了Java多文件以ZIP壓縮包導(dǎo)出的具體代碼,供大家參考,具體內(nèi)容如下
站在用戶的角度思考問題,與客戶深入溝通,找到蒙城網(wǎng)站設(shè)計與蒙城網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋蒙城地區(qū)。1、使用java實(shí)現(xiàn)吧服務(wù)器的圖片打包成一個zip格式的壓縮包導(dǎo)出,多個文件打包導(dǎo)出。
2、代碼如下:
**ImageByteUtil.java**
public class ImageByteUtil{ private static float QUALITY = 0.6f; public static void compressZip(List<File> listfiles, OutputStream output,String encode, boolean compress,String alias){ ZipOutputStream zipStream = null; try { zipStream = new ZipOutputStream(output); for (File file : listfiles){ compressZip(file, zipStream, compress,alias+"_"+(listfiles.indexOf(file)+1)); } } catch (Exception e) { e.printStackTrace(); }finally { try { if (zipStream != null) { zipStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } private static void compressZip(File file, ZipOutputStream zipStream, boolean compress,String alias) throws Exception{ FileInputStream input = null; try { input = new FileInputStream(file); //zip(input, zipStream, file.getName(), compress); zip(input, zipStream, alias+"."+file.getName().substring(file.getName().lastIndexOf(".")+1), compress); } catch (Exception e) { e.printStackTrace(); }finally { try { if(input != null) input.close(); } catch (IOException e) { e.printStackTrace(); } } } private static void zip(InputStream input, ZipOutputStream zipStream, String zipEntryName, boolean compress) throws Exception{ byte[] bytes = null; BufferedInputStream bufferStream = null; try { if(input == null) throw new Exception("獲取壓縮的數(shù)據(jù)項失敗! 數(shù)據(jù)項名為:" + zipEntryName); // 壓縮條目不是具體獨(dú)立的文件,而是壓縮包文件列表中的列表項,稱為條目,就像索引一樣 ZipEntry zipEntry = new ZipEntry("圖片/"+zipEntryName); // 定位到該壓縮條目位置,開始寫入文件到壓縮包中 zipStream.putNextEntry(zipEntry); if (compress) { bytes = ImageByteUtil.compressOfQuality(input, 0); zipStream.write(bytes, 0, bytes.length); } else { bytes = new byte[1024 * 5];// 讀寫緩沖區(qū) bufferStream = new BufferedInputStream(input);// 輸入緩沖流 int read = 0; while ((read = bufferStream.read(bytes)) != -1) { zipStream.write(bytes, 0, read); } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (null != bufferStream) bufferStream.close(); } catch (IOException e) { e.printStackTrace(); } } } public static byte[] compressOfQuality(File file, float quality) throws Exception{ byte[] bs = null; InputStream input = null; try { input = new FileInputStream(file); bs = compressOfQuality(input,quality); } catch (Exception e) { e.printStackTrace(); } finally { try { if (input != null) input.close(); } catch (IOException e) { e.printStackTrace(); } } return bs; } public static byte[] compressOfQuality(InputStream input, float quality) throws Exception { ByteArrayOutputStream output = null; try { output = new ByteArrayOutputStream(); if(quality == 0){ Thumbnails.of(input).scale(1f).outputQuality(QUALITY) .toOutputStream(output); } else { Thumbnails.of(input).scale(1f).outputQuality(quality).toOutputStream(output); } return output.toByteArray(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (output != null) output.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } }
本文題目:Java多文件以ZIP壓縮包導(dǎo)出的實(shí)現(xiàn)方法-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://aaarwkj.com/article16/dppcgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)站策劃、企業(yè)網(wǎng)站制作、網(wǎng)站營銷、動態(tài)網(wǎng)站、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)