كيف يمكنك توجيه تدفق الإدخال إلى ملف مضغوط أثناء قراءته باستخدام Java؟
-
02-07-2019 - |
سؤال
أرغب في تنفيذ برنامج وأثناء تشغيله، اقرأ مخرجاته وأخرج المخرجات إلى ملف مضغوط.يمكن أن يكون ناتج البرنامج كبيرًا جدًا، لذا فإن الفكرة هي عدم الاحتفاظ بالكثير من الذاكرة - فقط إرساله إلى ملف مضغوط كما أحصل عليه.
المحلول
ZipOutputStream targetStream = new ZipOutputStream(fileToSaveTo);
ZipEntry entry = new ZipEntry(nameOfFileInZipFile);
targetStream.putNextEntry(entry);
byte[] dataBlock = new byte[1024];
int count = inputStream.read(dataBlock, 0, 1024);
while (count != -1) {
targetStream.write(dataBlock, 0, count);
count = inputStream.read(dataBlock, 0, 1024);
}
بعبارة أخرى:
- يمكنك إنشاء ZipOutputStream، وإعطائه الملف الذي تريد الكتابة إليه.
يمكنك إنشاء ZipEntry، الذي يشكل ملفًا داخل هذا الملف المضغوط.أي.عندما تفتح myFile.zip، ويوجد هناك 3 ملفات، كل ملف هو ZipEntry.
يمكنك وضع هذا zipEntry في ZipOutputStream الخاص بك
- قم بإنشاء مخزن مؤقت للبايت لقراءة بياناتك فيه.
- اقرأ من inputStream الخاص بك إلى المخزن المؤقت للبايت الخاص بك، وتذكر العدد.
- على الرغم من أن العدد ليس -1، فاكتب هذا البايت إلى ملف zipStream الخاص بك.
- اقرأ السطر التالي.
أغلق التدفقات الخاصة بك عند الانتهاء.لفها بالطريقة التي تراها مناسبة.
لا تنتمي إلى StackOverflow