Назад к вопросам
Middle
69
questionbank

Какие классы в Java поддерживают чтение и запись потоков в сжатом формате?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Для работы со сжатыми потоками в Java используются классы из пакетов java.util.zip и java.util.jar.

Основные классы:

  • GZIPInputStream и GZIPOutputStream: Для работы с форматом GZIP.
  • ZipInputStream и ZipOutputStream: Для работы с форматом ZIP.
  • DeflaterInputStream и DeflaterOutputStream: Используют алгоритм DEFLATE (основа GZIP и ZIP, но без метаданных).

Пример чтения GZIP:

import java.io.FileInputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;

public class GzipReader {
    public static void main(String[] args) throws IOException {
        try (GZIPInputStream gis = new GZIPInputStream(new FileInputStream("file.gz"))) {
            int data = gis.read();
            while (data != -1) {
                // Обработка прочитанных данных
                System.out.print((char) data);
                data = gis.read();
            }
        }
    }
}

Пример записи в GZIP:

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;

public class GzipWriter {
    public static void main(String[] args) throws IOException {
        String content = "This is some data to be compressed.";
        try (GZIPOutputStream gos = new GZIPOutputStream(new FileOutputStream("file.gz"))) {
            gos.write(content.getBytes());
        }
    }
}

Аналогичные принципы применяются к классам ZipInputStream и ZipOutputStream, но они работают с записями внутри ZIP-архива.

Эти классы являются обертками над обычными потоками ввода/вывода (InputStream, OutputStream) и автоматически выполняют сжатие/распаковку.