Назад к вопросам
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) и автоматически выполняют сжатие/распаковку.