يستكشف هذه المقالة ضغط الملف وإزالة الضغط في 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 هذه الخطوات: التهيئة:
استيراد الفئات اللازمة ، تحديد مسارات الملف.
إلغاء الضغط:
إنشاء fileInputStream
و inflaterinputStream
لقراءة البيانات وإزالة الضغط عليها. اكتب البيانات المصغرة إلى ملف الوجهة باستخدام معالجة الأخطاء:
تنفيذ معالجة الأخطاء القوية (على سبيل المثال ، try-catch
الكتل) لإدارة المحتملة ioexceptions
في حين أن الأمثلة الكاملة والقوية تتطلب المزيد من معالجة الأخطاء وإدارة مسار الملف ، توضح مقتطفات بناء الجملة المبسطة العمليات الأساسية:
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