تقدم هذه المقالة بشكل أساسي استخدام الفئات المتعلقة بـ Java لضغط الملفات أو المجلدات.
ZLIB هي مكتبة ضغط البيانات مصممة لمعالجة البيانات النقية (بغض النظر عن مصدر البيانات).
7Z هو تنسيق ضغط جديد يحتوي على أعلى نسبة ضغط في الوقت الحاضر.
GZIP هي أداة ضغط الملفات (أو تنسيق الملف المضغوط الذي تم إنشاؤه بواسطة أداة الضغط) وهو مصمم لمعالجة الملفات الفردية. يستخدم GZIP ZLIB عند ضغط البيانات في ملف. من أجل حفظ المعلومات المتعلقة بخصائص الملف ، يحتاج GZIP إلى حفظ المزيد من محتوى الرأس في الملف المضغوط (*.GZ) ، ولا يحتاج ZLIB إلى النظر في هذا. لكن GZIP مناسب فقط لملف واحد ، وبالتالي فإن اللواحق التي نراها غالبًا على UNIX/Linux هي *.tar.gz أو *.tgz ، مما يعني أن الملفات المتعددة يتم تعبئتها أولاً في ملف واحد مع القطران ، ثم مضغوطًا بـ GZIP.
ZIP هو تنسيق مناسب لضغط ملفات متعددة (تتضمن الأدوات المقابلة PKZIP و Winzip ، إلخ). لذلك ، يجب أن يحتوي ملف ZIP على معلومات حول بنية دليل الملفات ، والتي هي معلومات أكثر من رأس GZIP. ومع ذلك ، تجدر الإشارة إلى أن تنسيق الرمز البريدي يمكنه تبني مجموعة متنوعة من خوارزميات الضغط. لا يتم ضغط معظم ملفات zip الشائعة الخاصة بنا باستخدام خوارزمية ZLIB ، وتنسيق البيانات المضغوطة يختلف تمامًا عن GZIP.
لذلك ، يجب عليك اختيار تقنيات ضغط مختلفة وفقًا لاحتياجاتك المحددة: إذا كنت بحاجة فقط إلى ضغط البيانات/إلغاء ضغطها ، فيمكنك تنفيذها مباشرة باستخدام ZLIB. إذا كنت بحاجة إلى إنشاء ملفات تنسيق GZIP أو فك ضغط نتائج ضغط الأدوات الأخرى ، فيجب عليك استخدام GZIP أو ZIP والفئات الأخرى ذات الصلة للتعامل معها.
تبعية مافن
<Rependency> <roupiD> org.apache.commons </groupId> <StifactId> commons-compress </artifactid> <sophy> 1.12 </version> </sependency>
تنسيق الرمز البريدي
ZIP الفراغ الثابت العام (إدخال السلسلة ، إخراج السلسلة ، اسم السلسلة) يلقي استثناء {ZipoutputStream Out = new ZipoutputStream (FileOutputStream جديد (الإخراج)) ؛ سلسلة [] مسارات = input.split ("// |") ؛ file [] files = ملف جديد [paths.length] ؛ Byte [] Buffer = New Byte [1024] ؛ لـ (int i = 0 ؛ i <paths.length ؛ i ++) {files [i] = ملف جديد (مسارات [i]) ؛ } لـ (int i = 0 ؛ i <files.length ؛ i ++) {fileInputStream fis = جديد fileInputStream (files [i]) ؛ if (files.length == 1 && name! = null) {out.putNextEntry (new zipentry (name)) ؛ } آخر {out.putnextentry (new zipentry (files [i] .getName ())) ؛ } int len ؛ // اقرأ محتوى الملف الذي تحتاجه لتنزيله وتعبئته في ملف zip بينما ((len = fis.read (buffer))> 0) {out.write (buffer ، 0 ، len) ؛ } out.closeentry () ؛ fis.close () ؛ } out.close () ؛ } out.close () ؛ } حزمة GZIP
public static void gzip (إدخال السلسلة ، إخراج السلسلة ، اسم السلسلة) يلقي الاستثناء {string compress_name = null ؛ if (name! = null) {compress_name = name ؛ } آخر {compress_name = ملف جديد (إدخال) .getName () ؛ } byte [] buffer = new byte [1024] ؛ حاول {gzipparameters gp = gzipparameters () جديد ؛ // قم بتعيين اسم الملف في الملف المضغوط gp.setFilename (compress_name) ؛ gzipCompressorOroutPutStream GCOS = جديد gzipCompressorOutputStream (FileOutputStream جديد (الإخراج) ، GP) ؛ FileInputStream Fis = جديد fileInputStream (إدخال) ؛ طول int بينما ((طول = fis.read (buffer))> 0) {gcos.write (المخزن المؤقت ، 0 ، طول) ؛ } fis.close () ؛ GCOS.Finish () ؛ } catch (ioException ioe) {ioe.printstacktrace () ؛ }} حزمة 7Z
public static void Z7Z (إدخال السلسلة ، إخراج السلسلة ، اسم السلسلة) يلقي الاستثناء {try {SevenZoutputFile SevenZoutput = NewZoutputFile (ملف جديد (إخراج)) ؛ Sevenzarchiveentry الدخول = فارغ ؛ سلسلة [] مسارات = input.split ("// |") ؛ file [] files = ملف جديد [paths.length] ؛ لـ (int i = 0 ؛ i <paths.length ؛ i ++) {files [i] = ملف جديد (مسارات [i] .trim ()) ؛ } لـ (int i = 0 ؛ i <files.length ؛ i ++) {bufferedInputStream input = null ؛ Enter = جديد BufferEdInputStream (FileInputStream جديد (مسارات [i])) ؛ if (name! = null) {entry = Sevenzoutput.Createarchiveentry (ملف جديد (مسارات [i]) ، الاسم) ؛ } آخر {entry = Sevenzoutput.createarchiveentry (ملف جديد (مسارات [i]) ، ملف جديد (مسارات [i]). getName ()) ؛ } Sevenzoutput.utharchiveentry (الدخول) ؛ Byte [] Buffer = New Byte [1024] ؛ int len ؛ بينما ((len = entersream.read (buffer))> 0) {SevenZoutput.write (Buffer ، 0 ، len) ؛ } enter.close () ؛ Sevenzoutput.closearchiveentry () ؛ } Sevenzoutput.close () ؛ } Sevenzoutput.close () ؛ } catch (ioException ioe) {system.out.println (ioe.toString () + "" + input) ؛ }} حزمة Zlib
public static void zlib (إدخال السلسلة ، إخراج السلسلة) يلقي استثناء {// deflateroutputstream dos = new deflateroutputstream (fileOutputStream جديد (الإخراج)) ؛ deRAteParameters dp = new DiflateParameters () ؛ dp.setwithzlibheader (صواب) ؛ deflateCompressorOutPutStream DCOS = جديد deflatecubressorOutputStream (FileOutputStream جديد (الإخراج) ، DP) ؛ FileInputStream Fis = جديد fileInputStream (إدخال) ؛ طول int = (int) ملف جديد (إدخال) .length () ؛ بيانات البايت [] = بايت جديد [طول] ؛ // طول int ؛ بينما ((طول = fis.Read (data))> 0) {dcos.write (البيانات ، 0 ، طول) ؛ } fis.close () ؛ dcos.finish () ؛ dcos.close () ؛ }آمل أن يكون هذا المقال مفيدًا لك. هذا كل شيء بالنسبة لك لتقديم محتويات مضغوطة ومعبأة لتنفيذ Java لتنسيقات ZIP و GZIP و 7Z و ZLIB. آمل أن يستمر الجميع في متابعة موقعنا! إذا كنت ترغب في تعلم Java ، فيمكنك متابعة متابعة هذا الموقع.