تصف هذه المقالة فئات أدوات الضغط وإزالة الضغط المنفذة في Java. شاركه للرجوع إليه ، على النحو التالي:
استيراد java.io.bufferedInputStream ؛ import java.io.bufferedoutputstream ؛ import java.io java.Util.Enumeration ؛ import org.apache.tools.zip.zipentry ؛ import org.apache.tools.zip.zipfile ؛ import org.apache.tools.zip.zipoutputstream ؛ public ziputil {private static int intedsize = 1024 ؛ / ** * ملف مضغوط * * param zipfilename * تم حفظ مسار ملف حزمة مضغوط * param filepath * مجلد أو مسار الملف الذي يجب ضغطه * param isDelete * isdelete) ؛ } / ** * ملف مضغوط * * param zipfilename * تم حفظ مسار ملف حزمة مضغوط * param inputFile * المجلد أو الملف الذي يجب ضغطه * param isDelete * FileOutputStream (zipfilename)) ؛ if (! inputfile.exists ()) {رمي fileNotfoundException جديد ("لم يتم العثور على ملف يتم ضغطه في المسار المحدد!") ؛ } zip (out ، inputfile ، "" ، isDelete) ؛ out.close () ؛ } / ** * طريقة الضغط المتكرر * * param out * دفق إخراج الحزمة المضغوط * param f * ملف ليكون مضغوطًا * param base * مسار مضغوط * param isDelete * // إذا كان ملف دليل [] inputFiles = inputFile.ListFiles () ؛ out.putNextentry (new zipentry (base + "/")) ؛ base = base.length () == 0؟ "": قاعدة + "/" ؛ لـ (int i = 0 ؛ i <inputfiles.length ؛ i ++) {zip (out ، inputfiles [i] ، base+inputfiles [i] .getName () ، isDelete) ؛ }} else {// إذا كان ملفًا if (base.length ()> 0) {out.putnextentry (new zipentry (base)) ؛ } آخر {out.putnextentry (new zipentry (inputFile.getName ())) ؛ } fileInputStream in = new FileInputStream (inputFile) ؛ حاول {int len ؛ Byte [] Buff = New Byte [BufferedSize] ؛ بينما ((len = in.read (buff))! = -1) {out.write (buff ، 0 ، len) ؛ }} catch (ioException e) {throw e ؛ } أخيرًا {in.close () ؛ }} if (isDelete) {inputFile.Delete () ؛ }} / ** * decompress * * param zipfilepath * ضغط حزمة مسار الحزمة * param filesavepath * unzip path * param isDelete * ما إذا كان يجب حذف ملف المصدر * athrows استثناء * / public void unzip (string zipfilepath ، string filepathpath ، boolean isDelete) ملف f = ملف جديد (zipfilepath) ؛ if ((! f.exists ()) && (f.length () <= 0)) {رمي استثناء جديد ("الملف المراد فك ضغطه غير موجود!") ؛ } zipfile zipfile = new zipfile (f) ؛ String Strath ، GBKPath ، Strtemp ؛ ملف tempfile = ملف جديد (ملفات filesavepath) ؛ // ابدأ من الدليل الحالي strprath = tempfile.getabsolutepath () ؛ // الموضع المطلق لتعداد الإخراج <zipentry> e = zipfile.getentries () ؛ بينما (e.hasmoreElements ()) {org.apache.tools.zip.zipentry zipent = E.NextElement () ؛ gbkpath = zipent.getName () ؛ if (zipent.isdirectory ()) {strtemp = strath + file.separator + gbkpath ؛ ملف dir = ملف جديد (strtemp) ؛ dir.mkdirs () ؛ يكمل؛ } آخر {// قراءة وكتابة ملف inputStream هو = zipfile.getInputStream (zipent) ؛ BufferedInputStream BIS = جديد BufferEdInputStream (IS) ؛ gbkpath = zipent.getName () ؛ strtemp = strath + file.separator + gbkpath ؛ // إنشاء سلسلة دليل strsubdir = gbkpath ؛ لـ (int i = 0 ؛ i <strsubdir.length () ؛ i ++) {if (strsubdir.subString (i ، i + 1) .equalsignorecase ("/")) {String temp = strpath + file.separator + strsubdir.substring (0 ، i) ؛ ملف subdir = ملف جديد (temp) ؛ if (! subdir.exists ()) subdir.mkdir () ؛ }} fileOutputStream fos = new FileOutputStream (strtemp) ؛ BufferedOutputStream BOS = جديد BufferEdoutputStream (FOS) ؛ int len ؛ Byte [] Buff = New Byte [BufferedSize] ؛ بينما ((len = bis.read (buff))! = -1) {bos.write (buff ، 0 ، len) ؛ } bos.close () ؛ fos.close () ؛ }}} catch (استثناء e) {E.PrintStackTrace () ؛ رمي ه ؛ } if (iSdelete) {new file (zipfilePath) .Delete () ؛ }} // public static void main (string [] args) {// Ziputil cpr = new Ziputil () ؛ // try {// cpr.zip ("c:/user/lenovo user/desktop/test inchoval.zip" ، "c:/user/lenovo user/new poller" ، false) ؛ المستخدم/سطح المكتب/الاختبار الصيني.لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض المواضيع: "ملخص ملفات Java ومهارات تشغيل الدليل" ، "Tutorial on Java Data Hrustures and Algorithms" ، "ملخص لمهارات Java Operation DOM" و "ملخص مهارات تشغيل Java Cache".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.