Java.util.zip.DeflaterInputStream класс в Java

Опубликовано: 15 Февраля, 2022

Реализует фильтр входного потока для сжатия данных в формате сжатия «deflate».

Конструктор и описание

  • DeflaterInputStream (InputStream in): создает новый входной поток с компрессором по умолчанию и размером буфера.
  • DeflaterInputStream (InputStream in, Deflater defl): создает новый входной поток с указанным компрессором и размером буфера по умолчанию.
  • DeflaterInputStream (InputStream in, Deflater defl, int bufLen): создает новый входной поток с указанным компрессором и размером буфера.

Методы:

  • int available (): возвращает 0 после достижения EOF, в противном случае всегда возвращает 1.
     Синтаксис: public int available ()
                  выбрасывает IOException
    Параметры:
    n - количество байтов, которые нужно пропустить
    Возврат:
    фактическое количество пропущенных байтов
    Броски:
    IOException
  • void close (): закрывает этот входной поток и его базовый входной поток, отбрасывая все ожидающие обработки несжатые данные.
     Синтаксис: public void close ()
               выбрасывает IOException
    Заменяет:
    закрыть в классе FilterInputStream
    Броски:
    IOException
  • void mark (int limit): эта операция не поддерживается.
     Синтаксис: public void mark (int limit)
    Параметры:
    limit - максимальное количество байтов, которое может быть прочитано до того, как маркер позиции будет признан недействительным
    
  • boolean markSupported (): всегда возвращает false, потому что этот входной поток не поддерживает методы mark () и reset ().
     Синтаксис: public boolean markSupported ()
    Возврат:
    ложь, всегда
  • int read (): читает один байт сжатых данных из входного потока.
     Синтаксис: public int read ()
             выбрасывает IOException
    Возврат:
    один байт сжатых данных или -1, если конец несжатого
    входной поток достигнут
    Броски:
    IOException
  • int read (byte [] b, int off, int len): читает сжатые данные в массив байтов.
     Синтаксис: public int read (byte [] b,
           int off,
           int len)
             выбрасывает IOException
    Параметры:
    b - буфер, в который читаются данные
    off - начальное смещение данных внутри b
    len - максимальное количество сжатых байтов для чтения в b
    Возврат:
    фактическое количество прочитанных байтов или -1, если конец
    несжатый входной поток достигнут
    Броски:
    IndexOutOfBoundsException 
    IOException
  • void reset (): эта операция не поддерживается.
     Синтаксис: public void reset ()
               выбрасывает IOException
    Броски:
    IOException
  • long skip (long n): пропускает и отбрасывает данные из входного потока.
     Синтаксис: public long skip (long n)
              выбрасывает IOException
    Параметры:
    n - количество байтов, которые нужно пропустить
    Возврат:
    фактическое количество пропущенных байтов
    Броски:
    IOException

Program:

//Java program to illustrate DeflaterInputStream class
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.zip.DeflaterInputStream;
  
class DeflaterInputStreamDemo
{
    public static void main(String[] args) throws IOException
    {
        byte b[] = new byte[10];
        for (byte i = 0; i <10 ; i++)
        {
            b[i] = i;
        }
        ByteArrayInputStream bin = new ByteArrayInputStream(b);
        DeflaterInputStream din = new DeflaterInputStream(bin);
  
        //illustrating markSupported() method
        System.out.println(din.markSupported());
          
        //illustrating skip() method
        din.skip(1);
  
        //illustrating available() method
        System.out.println(din.available());
  
        //illustrating read(byte[] b,int off,int len)
        byte c[] = new byte[10];
          
        din.read(c,0,9);
                for (int i = 0; i < 9; i++)
        {
            System.out.print(c[i]);
        }
        while(din.available() == 1)
        {
            //Reads a single byte of compressed data
            System.out.print(din.read());
        }
          
        System.out.println();
        System.out.println(din.available());
  
        // illustrating close() method
        din.close();
    }
}

Выход :

false
1
-1009996100981029710199231224400175046-1
0

Приведенный выше вывод представляет сжатые данные.

Следующая статья: Класс Java.util.zip.DeflaterOutputStream в Java

Автор статьи - Нишант Шарма . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

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

Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .