تستطيع أن تُنشئ ملفاً مضغوطاً باستخدام بعض الأسطر البرمجية باستخدام Filesystem.
يستفيد المبرمجون أحياناً من مهاراتهم البرمجية في أداء بعض المهام المعقدة والمتكررة، فيما يتعلق بضغط الملفات إذا أردت أن تضغط جميع الملفات الموجودة داخل شجرة مجلدات فتستطيع فعل ذلك بكتابة بعض الأسطر البرمجية.
قد تختصر لك كثيراً من الوقت بدلاً من إجراء عملية الضغط يدوياً. وفي هذه التدوينة ستتعرف على احدى طرق ضغط الملفات بلغة جافا.
تحدثت عن الصنف FileSystem في تدوينة كيف تقرأ من وتكتب في ملف نصي باستخدام [java.io] و [java.nio] أنصحك بالاطلاع عليها لتسهل عليك الأمور هنا.
خطوات إنشاء ملف مضغوط وضغط ملف
الخطوات منطقياً بسيطة ولكن يجب اتباعها بدقة.
(1) إنشاء الملف المضغوط Zip file
- إنشاء معرف موارد منتظم URI يتضمن صفات المخطط Scheme الخاص بالملفات المضغوطة Zip Files.
- إنشاء خريطة Map تتضمن الصفات الخاصة بإنشاء ملف مضغوط Zip File.
- استخدام ما أنشأته أعلاه في إنشاء كائن FileSystem، وهكذا تكون قد أنشأت ملفاً مضغوطاً.
(2) نقل الملف المراد ضغطه إلى داخل الملف المضغوط
- إنشاء مسار Path للملف المراد ضغطه.
- إنشاء مسار Path تخيلي لموقع الملف المراد ضغطه داخ الملف المضغوط Zip File.
- تنفيذ عملية النقل بين المسارين.
الشفرة المصدرية لإنشاء الملف المضغوط Zip file وضغط ملف
افترض معي الآتي:
- تريد أن تُنشئ ملفاً مضغوطاً يسمى 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 بداخل مجلد المشروع.

ختاماً إذا وجدت أن التدوينة مفيدة وعملية سيسعدني أن تشاركها مع أصدقائك.
كما يمكنك الاطلاع علي خوارزمية ضغط الملفات هوفمان (Huffman) للمزيد من المعرفة.
شكرا لك أ. مصطفى على هذه المعلومة جزاك الله خير
شكرا لك اخي مصطفى على هذه المعلومة جزاك الله خيرا
شكرا لك اخي مصطفى على هذه المعلومة جزاك الله خيرا
وإياك عمار
السلام عليكم ورحمة الله وبركاته
جزاك لله خير و بوركت عمل جميل أسأل الله لك التوفيق و السداد
إستمر
وعليكم السلام ورحمة الله وبركاته محمد،
شكراً لك على مرورك 🙂 جزيت الجنّة
وعليكم السلام ورحمة الله وبركاته محمد،
يسعدني وجودك في مدونة علوم.