ตัวอย่างนี้แชร์รหัสเฉพาะที่ส่งออกโดยไฟล์ Java หลายไฟล์ในแพ็คเกจการบีบอัด ZIP สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
1. ใช้ Java เพื่อใช้ภาพของแถบเซิร์ฟเวอร์ลงในแพ็คเกจบีบอัดในรูปแบบ zip และส่งออกหลายไฟล์ในแพ็คเกจ
2. รหัสมีดังนี้:
** imagebyteutil.java **
คลาสสาธารณะ ImageByTeutil {คุณภาพการลอยตัวแบบคงที่ส่วนตัว = 0.6F; โมฆะสาธารณะคงที่ public compressZip (รายการ <file> listfiles, เอาท์พุทเอาท์พุทสตรีม, การเข้ารหัสสตริง, การบีบอัดบูลีน, นามแฝงสตริง) {zipoutputStream zipstream = null; ลอง {zipstream = new ZipOutputStream (เอาต์พุต); สำหรับ (ไฟล์ไฟล์: listfiles) {compresszip (ไฟล์, zipstream, บีบอัด, นามแฝง+"_"+(listfiles.indexof (ไฟล์) +1)); }} catch (exception e) {e.printstacktrace (); } ในที่สุด {ลอง {ถ้า (zipstream! = null) {zipstream.close (); }} catch (ioexception e) {e.printstacktrace (); }}} โมฆะคงที่ส่วนตัว compressZip (ไฟล์ไฟล์, zipoutputstream zipstream, boolean compress, string alias) พ่นข้อยกเว้น {fileInputStream input = null; ลอง {input = new fileInputStream (ไฟล์); // zip (อินพุต, zipstream, file.getName (), บีบอัด); zip (อินพุต, zipstream, alias+"."+file.getName (). substring (file.getName (). lastIndExof (".")+1), บีบอัด); } catch (exception e) {e.printstacktrace (); } ในที่สุด {ลอง {ถ้า (อินพุต! = null) input.close (); } catch (ioexception e) {e.printstacktrace (); }}} zip void คงที่ส่วนตัว (อินพุตอินพุตสตรีม, zipoutputstream zipstream, zipentryName สตริง, การบีบอัดบูลีน) โยนข้อยกเว้น {byte [] bytes = null; bufferedInputStream bufferStream = null; ลอง {ถ้า (อินพุต == null) โยนข้อยกเว้นใหม่ ("ไม่สามารถรับรายการข้อมูลที่บีบอัดได้ชื่อรายการข้อมูลคือ:" + zipentryName); // รายการที่บีบอัดไม่ใช่ไฟล์อิสระเฉพาะ แต่รายการในรายการไฟล์แพ็คเกจที่บีบอัดเรียกว่ารายการเช่นเดียวกับดัชนี Zipentry Zipentry = ใหม่ Zipentry ("Image/"+ZipentryName); // ตำแหน่งไปยังตำแหน่งรายการบีบอัดและเริ่มเขียนไฟล์ไปยังแพ็คเกจบีบอัด zipstream.putNextentry (Zipentry); if (บีบอัด) {bytes = imageByTeutil.comPressOfquality (อินพุต, 0); zipstream.write (ไบต์, 0, bytes.length); } else {bytes = byte ใหม่ [1024 * 5]; // อ่านและเขียนบัฟเฟอร์บัฟเฟอร์ = ใหม่ bufferedInputStream (อินพุต); // อินพุตบัฟเฟอร์ int อ่าน = 0; ในขณะที่ ((read = bufferstream.read (ไบต์))! = -1) {zipstream.write (ไบต์, 0, อ่าน); }}} catch (ioexception e) {e.printstacktrace (); } ในที่สุด {ลอง {if (null! = bufferStream) buffersTream.close (); } catch (ioexception e) {e.printstacktrace (); }}} ไบต์คงที่สาธารณะ [] compressofquality (ไฟล์ไฟล์คุณภาพลอย) พ่นข้อยกเว้น {byte [] bs = null; อินพุตสตรีมอินพุต = null; ลอง {input = new fileInputStream (ไฟล์); bs = compressofquality (อินพุตคุณภาพ); } catch (exception e) {e.printstacktrace (); } ในที่สุด {ลอง {ถ้า (อินพุต! = null) input.close (); } catch (ioexception e) {e.printstacktrace (); }} ส่งคืน bs; } สาธารณะคงที่สาธารณะ [] compressofquality (อินพุตอินพุต, คุณภาพลอย) พ่นข้อยกเว้น {byteArrayOutputStream output = null; ลอง {output = ใหม่ byteArrayOutputStream (); if (quality == 0) {thumbnails.of (อินพุต) .scale (1f) .OutputQuality (คุณภาพ) .toOutputStream (เอาต์พุต); } else {thumbnails.of (อินพุต) .scale (1f) .OutputQuality (คุณภาพ) .toOutputStream (เอาต์พุต); } return output.tobytearray (); } catch (exception e) {e.printstacktrace (); } ในที่สุด {ลอง {ถ้า (เอาต์พุต! = null) output.close (); } catch (ioexception e) {e.printstacktrace (); }} return null; -** main.java **
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// เพิ่มคอลเลกชันไฟล์ที่จะส่งออกเพิ่มไฟล์ที่คุณต้องส่งออกรายการ <file> listfiles = new ArrayList <> (); // การเรียกคลาสเครื่องมือคำอธิบายพารามิเตอร์ (ชุดไฟล์ที่ต้องส่งออกวัตถุ byteArrayOutputStream การเข้ารหัสไม่ว่าจะบีบอัด [จริง, เท็จ], คำนำหน้าชื่อไฟล์) imageByTeutil.comPressZip // ระบุรูปแบบการส่งออก returnContext.addparam ("ExportFilename", "extfile.zip"); returnContext.addparam ("mimetype", "zip"); กลับเข้า;}3. ฟังก์ชั่นนี้ถูกนำไปใช้ตามความต้องการของโครงการในระหว่างกระบวนการพัฒนา การทดสอบสามารถใช้งานได้ตามปกติและสามารถปรับแต่งได้
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น