كيف تُنشئ ملف مضغوط Zip في لغة جافا باستخدام Filesystem

تستطيع أن تضغط ملفاتك برمجياً كذلك

نعم تستطيع أن تُنشئ ملفاً مضغوطاً باستخدام بعض الأسطر البرمجية.

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

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

تحدثت عن الصنف FileSystem في تدوينة كيف تقرأ من وتكتب في ملف نصي باستخدام [java.io] و [java.nio] أنصحك بالاطلاع عليها لتسهل عليك الأمور هنا.

خطوات إنشاء ملف مضغوط وضغط ملف

الخطوات منطقياً بسيطة.

(1) إنشاء الملف المضغوط Zip file

  1. إنشاء معرف موارد منتظم URI يتضمن صفات المخطط Scheme الخاص بالملفات المضغوطة Zip Files.
  2. إنشاء خريطة Map تتضمن الصفات الخاصة بإنشاء ملف مضغوط Zip File.
  3. استخدام ما أنشأته أعلاه في إنشاء كائن FileSystem، وهكذا تكون قد أنشأت ملفاً مضغوطاً.

(2) نقل الملف المراد ضغطه إلى داخل الملف المضغوط

  1. إنشاء مسار Path للملف المراد ضغطه.
  2. إنشاء مسار Path تخيلي لموقع الملف المراد ضغطه داخ الملف المضغوط Zip File.
  3. تنفيذ عملية النقل بين المسارين.

الشفرة المصدرية لإنشاء الملف المضوط وضغط ملف

افترض معي الآتي:

  • تريد أن تُنشئ ملفاً مضغوطاً يسمى myZipFile.zip.
  • لديك ملف فيديو اسمه test.mp4 وتريد أن تضغطه داخل ملف myZipFile.zip ويكون اسمه newTest.mp4.
    
    try {
                
       //(1.1)
        URI zipURI;
        zipURI = new URI("jar:file", Paths.get("myZipFile.zip").toUri().getPath(), null);
    
        //(1.2)
        HashMap<String, String> properties = new HashMap<>();
        properties.put("create", "true");
        
        //(1.3)
        FileSystem fs = FileSystems.newFileSystem(zipURI, properties);
        
        //(2.1)
        Path toCompress = Paths.get("test.mp4");
        
        //(2.2)
        Path compressed = fs.getPath("/newTest.mp4");
        
        //(2.3)
        Files.copy(toCompress, compressed, StandardCopyOption.REPLACE_EXISTING);
    
        fs.close();
    
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

لا تنس استيراد المكتبات

import java.net.URI;
import java.nio.file.*;
import java.util.HashMap;

قبل تنفيذ الشفرة المصدرية تأكد من وجود الملف test.mp4 بداخل مجلد المشروع.

إذا وجدت أن التدوينة مفيدة وعملية سيسعدني أن تشاركها مع أصدقائك.

مصطفى الطيب

صديقٌ لنُظمِ المعلُومات و عُلومِ الحَاسِب و مُختصٌ بهما، مُحبٌ للعِلمِ و نَشرِه. أُشاركُ معارفي و تَجاربي و خِبراتي في تَدويناتٍ و دوراتٍ من خلال مُدونةِ عُلوم.

‫5 تعليقات

  1. السلام عليكم ورحمة الله وبركاته
    جزاك لله خير و بوركت عمل جميل أسأل الله لك التوفيق و السداد
    إستمر

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى
إغلاق