"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ضغط الملفات وفك ضغطها في جافا

ضغط الملفات وفك ضغطها في جافا

نشر في 2025-03-24
تصفح:509

Compressing and Decompressing files in Java

يستكشف هذه المقالة ضغط الملف وإزالة الضغط في Java ، مع التركيز على توفر هذه الفئات طرقًا فعالة للتعامل مع البيانات المضغوطة. المفاهيم الأساسية:

يوفر Java دعمًا مدمجًا لضغط الملفات وإزالة الضغط عليها باستخدام الحزمة java.util.zip

.

deflaterOutputStream يضغط البيانات في تنسيق الانحراف (غالبًا ما يستخدم داخل أرشيفات zip) ، بينما مثال: ضغط ملف إلى zip

يوضح هذا المثال كيفية ضغط ملف في أرشيف مضغوط:

يحاول { ملف الملف = ملف جديد (FilePath) ؛ String zipfilename = file.getName () ".zip" ؛ fileOutputStream fos = fileOutputStream جديد (zipfilename) ؛ zipoutputstream zos = new zipoutputstream (FOS) ؛ zos.putnextentry (new zipentry (file.getName ())) ؛ byte [] bytes = files.readallbytes (paths.get (filepath)) ؛ Zos.Write (Bytes ، 0 ، bytes.length) ؛ Zos.Closeentry () ؛ Zos.Close () ؛ } catch (fileNotfoundException ex) { System.err.format ("ملف غير موجود: ٪ s ٪ n" ، filepath) ؛ } catch (ioException ex) { System.err.println ("خطأ I/O:" EX) ؛ }

try {
    File file = new File(filePath);
    String zipFileName = file.getName()   ".zip";
    FileOutputStream fos = new FileOutputStream(zipFileName);
    ZipOutputStream zos = new ZipOutputStream(fos);
    zos.putNextEntry(new ZipEntry(file.getName()));
    byte[] bytes = Files.readAllBytes(Paths.get(filePath));
    zos.write(bytes, 0, bytes.length);
    zos.closeEntry();
    zos.close();
} catch (FileNotFoundException ex) {
    System.err.format("File not found: %s%n", filePath);
} catch (IOException ex) {
    System.err.println("I/O error: "   ex);
}
تتضمن خوارزمية عامة لضغط الملف وإلغاء الضغط في Java هذه الخطوات:

التهيئة:

استيراد الفئات اللازمة ، تحديد مسارات الملف.

  1. الضغط: إنشاء fileOutputStream
  2. و
  3. اقرأ البيانات من الملف المصدر باستخدام fileInputStream ، اكتب إلى إلغاء الضغط: إنشاء fileInputStream و inflaterinputStream لقراءة البيانات وإزالة الضغط عليها. اكتب البيانات المصغرة إلى ملف الوجهة باستخدام
  4. fileOtputStream
  5. ، وأغلق التدفقات. معالجة الأخطاء: تنفيذ معالجة الأخطاء القوية (على سبيل المثال ، try-catch الكتل) لإدارة المحتملة ioexceptions
  6. أمثلة بناء جملة مبسطة: في حين أن الأمثلة الكاملة والقوية تتطلب المزيد من معالجة الأخطاء وإدارة مسار الملف ، توضح مقتطفات بناء الجملة المبسطة العمليات الأساسية:
  7. ضغط:

fileInputStream inputStream = جديد fileInputStream (inputPath) ؛ FileOutputStream OutputStream = جديد fileOutputStream (OutputPath) ؛ DeflaterOutputStream ضاغط = deflateroutputstream جديد (OutputStream) ؛ // ... اكتب البيانات من InputStream إلى الضاغط ... ضاغط.

إلغاء الضغط:

fileInputStream inputStream = جديد fileInputStream (inputPath) ؛ FileOutputStream OutputStream = جديد fileOutputStream (OutputPath) ؛ inflaterInputStream decompressor = جديد inflaterinputStream (inputStream) ؛ // ... اكتب البيانات من Decoxpressor إلى OutputStream ... decompressor.close () ؛

FileInputStream inputStream = new FileInputStream(inputPath);
FileOutputStream outputStream = new FileOutputStream(outputPath);
DeflaterOutputStream compressor = new DeflaterOutputStream(outputStream);
// ... write data from inputStream to compressor ...
compressor.close();

يوجد نهجان رئيسيان: ضغط/فك ضغط الملفات الفردية والتعامل مع ملفات أو أدلة متعددة. تُظهر الأمثلة المقدمة سابقًا في النص الأصلي ضغطًا للملف الواحد باستخدام zipoutputstream

ومثال أكثر تعقيدًا لملفات متعددة. تتطلب دلائل التعامل مع المعالجة العودية لاجتياز هيكل الدليل. لاحظ أن أمثلة التعليمات البرمجية الأصلية تفتقر إلى معالجة مسار الملف المناسبة وإدارة الأخطاء ، مما يؤدي إلى
FileInputStream inputStream = new FileInputStream(inputPath);
FileOutputStream outputStream = new FileOutputStream(outputPath);
InflaterInputStream decompressor = new InflaterInputStream(inputStream);
// ... write data from decompressor to outputStream ...
decompressor.close();

خاتمة:

تقدم Java أدوات قوية لضغط الملفات وإزالة الضغط. يعد فهم

deflaterOutputStream و inflaterinputStream جنبا إلى جنب مع معالجة الأخطاء المناسبة وإدارة مسار الملف أمرًا بالغ الأهمية لإنشاء أدوات ضغط موثوقة وفعالة. تذكر دائمًا التعامل مع الاستثناءات المحتملة وتوفير رسائل الخطأ المناسبة للمستخدم.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3