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

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

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

ZIP-архивы — это популярный формат сжатия данных, который позволяет объединять несколько файлов в один архив. В Java для работы с ZIP-архивами используются классы ZipInputStream и ZipOutputStream. Начнем с чтения ZIP-архивов.

Класс
ZipInputStream

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

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

Чтение структуры ZIP-архива: ZIP-архив состоит из записей (entries), каждая из которых представляет отдельный файл. Каждая запись содержит метаданные (имя, размер, метод сжатия и т.д.) и сами данные.
Распаковка данных: ZipInputStream читает каждую запись по очереди и распаковывает данные с использованием алгоритма DEFLATE.

Пример чтения ZIP-архива
import java.io.FileInputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class ZipReaderExample {
public static void main(String[] args) {
String zipFilePath = "example.zip";

try (FileInputStream fis = new FileInputStream(zipFilePath);
ZipInputStream zis = new ZipInputStream(fis)) {

ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
System.out.println("File: " + entry.getName());
System.out.println("Size: " + entry.getSize() + " bytes");

// Чтение содержимого файла
byte[] buffer = new byte[1024];
int len;
while ((len = zis.read(buffer)) > 0) {
// Здесь можно обработать данные, например, записать в другой файл
System.out.write(buffer, 0, len);
}
System.out.println("\n-------------------");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


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

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


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


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


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


#Java #Training #Medium #ZipInputStream