غالبًا ما نستخدم برامج الضغط مثل Winzip لضغط الملفات لسهولة الإرسال. يوفر Java أيضًا فئة تضغط الملفات لتقليل كمية البيانات أثناء الإرسال ، والتي يمكن أن تضغط بسهولة الملفات إلى zip ، jar ، gzip ، إلخ.
ما يلي يتحدث بشكل أساسي عن الملفات المضغوطة في شكل مضغوط ، ويتم استخدام الملفات المضغوطة في شكل JAR و GZIP أيضًا بشكل مشابه.
الرمز البريدي هو شكل شائع جدا من الضغط. في Java ، لتنفيذ ضغط الرمز البريدي ، الاستخدام الرئيسي للفئات في حزمة java.util.zip. تشمل بشكل أساسي Zipfile و ZipoutputStream و ZipinputStream و Zipentry. يتم استخدام ZipoutputStream لضغط الملفات ، ويتم استخدام ZipinputStream و Zipfile لإلغاء ضغط الملفات ، ويتم استخدام zipentry أثناء الضغط وإزالة الضغط. في ملفات Java Zip المضغوطة ، يكون كل ما هو كائن zipentry كائن zipentry.
ملفات مضغوطة:
استيراد java.io.file ؛ استيراد java.io.fileInputStream ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstream ؛ استيراد java.nio.charset.charset zipoutputStreamTest {public static void main (string args []) remrows ioException {test1 () ؛ Test2 () ؛ } test static void test1 () يلقي iOexception {ZipoutputStream Zos = new zipoutputStream (FileOutputStream جديد ("d: //testzip.zip") ، charset.forname ("gbk")) ؛ // instantiate كائن zipentry يسمى ab.txt zipentry entry = new zipentry ("ab.txt") ؛ // تعيين التعليق zos.setcomment ("اختبار zip لملف واحد") ؛ // أضف كائن zipentry الذي تم إنشاؤه إلى الملف المضغوط ، ثم يتم وضع المحتوى المكتوب في الملف المضغوط في هذا الكائن zipentry zos.putnextentry (إدخال) ؛ inputStream هو = جديد fileInputStream ("d: //ab.txt") ؛ int len = 0 ؛ بينما ((len = iS.Read ())! = -1) zos.write (len) ؛ is.close () ؛ Zos.Close () ؛ } test static void test2 () يلقي iOexception {file infile = ملف جديد ("d: // test") ؛ zipoutputstream zos = new zipoutputStream (fileOutputStream جديد ("d: //test.zip") ، charset.forname ("gbk")) ؛ ZOS.SetComment ("معالجة ملفات متعددة") ؛ Zipfile (infile ، Zos ، "") ؛ Zos.Close () ؛ } zipfile zipfile الثابتة العامة (ملف infile ، zipoutputstream zos ، سلسلة dir) يلقي ioException {if (infile.isdirectory ()) {file [] files = infile.listfiles () ؛ لـ (ملف الملف: الملفات) zipfile (ملف ، ZOS ، dir + "//" + infile.getName ()) ؛ } else {string internname = null ؛ if (! ". Else EntryName = infile.getName () ؛ Zipentry Entry = zipentry new (enterName) ؛ zos.putnextentry (الدخول) ؛ inputStream هو = جديد fileInputStream (infile) ؛ int len = 0 ؛ بينما ((len = iS.Read ())! = -1) zos.write (len) ؛ is.close () ؛ }}} قم بفك ضغط الملف:
استيراد java.io.file ؛ استيراد java.io.fileinputStream ؛ استيراد java.io.fileOutputStream ؛ استيراد java.ioexception ؛ استيراد java.io.inputstream ؛ استيراد java.io.outputstream ؛ استيراد java.nio.charset.charset java.util.zip.zipfile ؛ import java.util.zip.zipinputStream ؛ public class zipinputstreamtest {public static void main (string args []) remrows ioexception يمكن تمثيل كل ملف مضغوط مضغوط على أنه zipfile // على إنشاء كائن zipinputstream من ملف مضغوط مضغوط ، يمكنك استخدام طريقة getNextentry () لهذا الفئة للحصول على كل zipinputstream zipinputstream = new zipinputstream (fileInputStream (file) ، charset.forn. zipentry zipentry = null ؛ بينما ((zipentry = zipinputStream.getNextEntry ())! = null) {String filename = zipentry.getName () ؛ ملف temp = ملف جديد ("d: // unpacktest //" + filename) ؛ if (! temp.getParentFile (). OutputStream OS = جديد fileOutputStream (temp) ؛ // احصل على دفق إدخال Zipentry محدد من خلال طريقة getInputStream من Zipfile IsSstream Is = zipfile.getInputStream (zipentry) ؛ int len = 0 ؛ بينما ((len = iS.Read ())! = -1) os.write (len) ؛ OS.Close () ؛ is.close () ؛ } zipinputstream.close () ؛ }}ما سبق هو عبارة عن مجموعة من المعلومات حول ملفات ضغط Java وإزالة الضغط. سنستمر في إضافة المعلومات ذات الصلة في المستقبل. شكرا لدعمكم لهذا الموقع!