ในระหว่างกระบวนการทำงานจะต้องมีการสร้างโฟลเดอร์เพื่อบีบอัดแล้วมอบให้กับผู้ใช้เพื่อดาวน์โหลด ดังนั้นฉันจึงเขียนคลาสเครื่องมือสำหรับไฟล์บีบอัดด้วยตัวเอง คลาสเครื่องมือนี้รองรับการบีบอัดไฟล์และโฟลเดอร์เดียว ใส่รหัส:
นำเข้า java.io.bufferedOutputStream; นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.io.fileoutputStream นำเข้า org.apache.tools.zip.zipentry; นำเข้า org.apache.tools.zip.zip.zip.zip.zip.zip.zip.zip.zip.zip.zip.zip.zip.zip. 2013-7-28 * @description: คลาสเครื่องมือการบีบอัดไฟล์ * บีบอัดไฟล์/โฟลเดอร์ที่ระบุลงในไฟล์ zip และ rar บีบอัด */คลาสสาธารณะ compressedFileUtil {/** * constructor เริ่มต้น */publicedfileutil () {}/** ** @desc TargetPath ปลายทางปลายทางการบีบอัดไฟล์พา ธ * @return เป็นโมฆะ * @throws Exception */ โมฆะสาธารณะบีบอัด file (String Resourcespath, String TargetPath) โยนข้อยกเว้น {ไฟล์ ResourcesFile = ไฟล์ใหม่ (Resourcespath); // ไฟล์ต้นฉบับไฟล์ไฟล์ targetFile = ไฟล์ใหม่ (TargetPath); // วัตถุประสงค์ // หากไม่มีเส้นทางปลายทางให้สร้าง if ใหม่ if (! targetFile.exists ()) {targetFile.mkdirs (); } สตริง targetName = ResourcesFile.getName ()+". zip"; // เป้าหมายชื่อไฟล์บีบอัด FileOutputStream outputStream = ใหม่ fileOutputStream (TargetPath+"//"+TargetName); zipoutputStream out = new ZipOutputStream (ใหม่ bufferedOutputStream (outputStream)); CreateCompressedFile (ออก, ResourcesFile, ""); out.close (); } /*** @desc สร้างไฟล์บีบอัด * หากเป็นโฟลเดอร์ให้ใช้การเรียกซ้ำเพื่อสำรวจและบีบอัดไฟล์ * หากเป็นไฟล์ให้บีบอัดโดยตรง * @param out stream * @param ไฟล์เป้าหมายไฟล์ * @return เป็นโมฆะ * @throws ยกเว้น */โมฆะสาธารณะ createCompressedFile if (file.isdirectory ()) {// รับไฟล์ข้อมูลรายการไฟล์ [] files = file.listfiles (); // เพิ่มโฟลเดอร์ลงในไดเรกทอรีบรรจุภัณฑ์ระดับถัดไป out.putNextEntry (zipentry ใหม่ (dir+"/")); dir = dir.length () == 0? "": dir +"/"; // loop to package ไฟล์ในโฟลเดอร์สำหรับ (int i = 0; i <files.length; i ++) {createCompressedFile (ออก, ไฟล์ [i], dir+ไฟล์ [i] .getName ()); // การประมวลผลแบบเรียกซ้ำ}} else {// ปัจจุบันคือไฟล์การประมวลผลบรรจุภัณฑ์ // การป้อนข้อมูลไฟล์สตรีม FileInputStream FIS = ใหม่ FileInputStream (ไฟล์); out.putNextentry (zipentry ใหม่ (dir)); // เขียน int j = 0; ไบต์ [] บัฟเฟอร์ = ไบต์ใหม่ [1024]; ในขณะที่ ((j = fis.read (บัฟเฟอร์))> 0) {out.write (บัฟเฟอร์, 0, j); } // ปิดสตรีมอินพุต fis.close (); }} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {incpressedFileUtil compressedFileUtil = ใหม่บีบอัด fileUtil (); ลอง {CompressedFileUtil.comPressedFile ("g: // zip", "f: // zip"); System.out.println ("ไฟล์บีบอัดถูกสร้างขึ้น ... "); } catch (exception e) {system.out.println ("การสร้างไฟล์ที่บีบอัดล้มเหลว ... "); E.PrintStackTrace (); -ผลลัพธ์ของการรันโปรแกรมมีดังนี้:
โครงสร้างไดเรกทอรีไฟล์ก่อนการบีบอัด:
เคล็ดลับ: หากคุณใช้ java.util.zip ภายใต้ java.util สำหรับบรรจุภัณฑ์อาจมีปัญหาของภาษาจีน นี่เป็นเพราะวิธี Java Zip ไม่รองรับการเปลี่ยนแปลงในรูปแบบการเข้ารหัส เราสามารถใช้คลาส ZIP Tool ภายใต้ Ant.java สำหรับบรรจุภัณฑ์ ดังนั้นคุณต้องนำเข้า ant.jar ไปยังไดเรกทอรี LIB ของโครงการ
สรุป
ข้างต้นเป็นรหัสตัวอย่างสำหรับไฟล์บีบอัดที่สร้างขึ้น Java ที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!