أثناء عملية العمل ، يجب إنشاء مجلد ليتم ضغطه ثم تقديمه إلى المستخدم للتنزيل. لذلك كتبت فئة الأدوات للملفات المضغوطة بنفسي. تدعم فئة الأدوات هذه ملفات واحدة ومجلد. ضع الرمز:
استيراد java.io.bufferedoutputstream ؛ استيراد java.io.file ؛ استيراد java.io.fileinputStream ؛ استيراد java.io.fileOutputStream ؛ استيراد org.apache.tools.zip.zipentry 2013-7-28 * description: فئة أداة ضغط الملف * ضغط الملف/المجلد المحدد في ملفات مضغوطة zip و rar */compressed compressedfileutil {/** TargetPath Destination Compressed File Path * Return void * Throws استثناء */ public void compressedfile (String ResourcesPath ، String TargetPath) يلقي الاستثناء {file resourcesfile = new file (ResourcesPath) ؛ // مصدر ملف TargetFile = ملف جديد (TargetPath) ؛ // الغرض // إذا لم يكن مسار الوجهة موجودًا ، فقم بإنشاء if (! targetfile.exists ()) {targetfile.mkdirs () ؛ } string targetName = resourcesfile.getName ()+". zip" ؛ // هدف اسم الملف المضغوط FileOutputStream OutputStream = جديد fileOutputStream (TargetPath+"//"+TargetName) ؛ ZipoutputStream Out = new zipoutputStream (bufferedoutputstream جديد (OutputStream)) ؛ CreateCrugressedFile (خارج ، الموارد ، "") ؛ out.close () ؛ } /*** @DESC قم بإنشاء ملف مضغوط. * إذا كان مجلدًا ، فاستخدم عودة لاجتياز الملف وضغطه * إذا كان ملفًا ، فقم بضغطه مباشرة * param خارج دفق الإخراج * param file file * @return athrows استثناء */public void creativeCressionfile (zipoutputstream out ، ملف الملف ، // الحصول على ملف معلومات قائمة الملفات [] ملفات = file.listfiles () ؛ // إضافة مجلد إلى دليل التغليف من المستوى التالي out.putNextentry (zipentry new (dir+"/")) ؛ dir = dir.length () == 0؟ "": dir +"/" ؛ // loop to package files in the folder لـ (int i = 0 ؛ i <files.length ؛ i ++) {createCrugressedFile (Out ، files [i] ، dir+files [i] .getName ()) ؛ // المعالجة المتكررة}} else {// التيار هو ملف ، معالجة التغليف//إدخال ملف تدفق FileInputStream fis = جديد fileInputStream (ملف) ؛ out.putnextentry (new zipentry (dir)) ؛ // اكتب int j = 0 ؛ Byte [] Buffer = New Byte [1024] ؛ بينما ((j = fis.read (buffer))> 0) {out.write (buffer ، 0 ، j) ؛ } // أغلق دفق الإدخال fis.close () ؛ }} public static void main (string [] args) {compressedfileutil compressedfileutil = new compressedfileutil () ؛ حاول {compressedfileutil.compressionfile ("g: // zip" ، "f: // zip") ؛ System.out.println ("تم إنشاء ملف مضغوط ...") ؛ } catch (استثناء e) {system.out.println ("فشل توليد الملف المضغوط ...") ؛ E.PrintStackTrace () ؛ }}}نتائج تشغيل البرنامج هي كما يلي:
بنية دليل الملف قبل الضغط:
نصيحة: إذا كنت تستخدم java.util.zip تحت java.util للتغليف ، فقد تكون هناك مشكلة في الصينية المشوهة. وذلك لأن طريقة java zip لا تدعم التغييرات في تنسيق الترميز. يمكننا استخدام فئة أدوات zip ضمن ant.java للتغليف. لذلك ، تحتاج إلى استيراد ant.jar في دليل LIB للمشروع.
لخص
ما ورد أعلاه هو رمز المثال للملفات المضغوطة التي تم إنشاؤها بواسطة Java المقدمة لك من قبل المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!