Java for Beginner
673 subscribers
556 photos
156 videos
12 files
848 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Запись ZIP-архивов с использованием ZipOutputStream

Теперь, когда мы научились читать ZIP-архивы, давайте рассмотрим, как создавать их с помощью ZipOutputStream.

Класс ZipOutputStream

ZipOutputStream — это класс, который позволяет создавать ZIP-архивы. Он наследуется от DeflaterOutputStream и использует алгоритм DEFLATE для сжатия данных.

Как это работает под капотом?


Создание структуры ZIP-архива: Каждый файл, добавляемый в архив, представлен как ZipEntry. Метаданные (имя, размер, метод сжатия) записываются в архив перед самими данными.
Сжатие данных: Данные сжимаются с использованием алгоритма DEFLATE и записываются в архив.

Пример создания ZIP-архива
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipWriterExample {
public static void main(String[] args) {
String[] filesToZip = {"file1.txt", "file2.txt"};
String zipFilePath = "output.zip";

try (FileOutputStream fos = new FileOutputStream(zipFilePath);
ZipOutputStream zos = new ZipOutputStream(fos)) {

for (String file : filesToZip) {
try (FileInputStream fis = new FileInputStream(file)) {
ZipEntry zipEntry = new ZipEntry(file);
zos.putNextEntry(zipEntry);

byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
zos.closeEntry();
}
}
System.out.println("ZIP-архив успешно создан: " + zipFilePath);
} catch (IOException e) {
e.printStackTrace();
}
}
}


Плюсы и минусы ZipOutputStream

Плюсы:
Простота создания архивов.
Поддержка потоковой записи, что позволяет работать с большими объемами данных.


Минусы:
Нет встроенной поддержки для шифрования или установки паролей.
Требует ручного управления записями и данными.


Нюансы использования

Всегда закрывайте ZipOutputStream после использования, чтобы завершить запись архива.
Используйте буфер для записи данных, чтобы минимизировать количество операций ввода-вывода.


#Java #Training #Medium #ZipOutputStream