# Class BitInputStream

java.lang.Object
fr.iutfbleau.sae.mpif.BitInputStream

public class BitInputStream extends Object
Décorateur de flux permettant la lecture binaire à granularité du bit.

Cette classe encapsule un `InputStream` existant et fournit des opérations de lecture bit par bit ou par groupes de bits. Elle ne gère ni l'ouverture ni la sélection du fichier source.

Utilisée notamment pour le décodage des fichiers compressés (ex : format PIF utilisant des codes de Huffman).

Since:
  2025-12-13

## Constructor Summary

Constructors
Constructor
Description
`BitInputStream(InputStream fluxEntree)`
Construit un lecteur binaire à partir d'un flux existant.

## Method Summary

Modifier and Type
Method
Description
`void`
`closeFlux()`
Ferme le flux d'entrée sous-jacent.
`int`
`readBit()`
Lit un bit depuis le flux binaire.
`int`
`readBits(int nombreBits)`
Lit une séquence de bits consécutifs et les assemble dans un entier.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### BitInputStream

public BitInputStream(InputStream fluxEntree)
Construit un lecteur binaire à partir d'un flux existant.

Parameters:
  `fluxEntree` - flux d'entrée à décorer
Throws:
  `IllegalArgumentException` - si le flux est nul

## Method Details

### readBit

public int readBit() throws IOException
Lit un bit depuis le flux binaire.

Returns:
  0 ou 1 si un bit est lu, -1 si la fin du flux est atteinte
Throws:
  `IOException` - si une erreur de lecture survient

### readBits

public int readBits(int nombreBits) throws IOException
Lit une séquence de bits consécutifs et les assemble dans un entier.

Parameters:
  `nombreBits` - nombre de bits à lire (strictement positif)
Returns:
  valeur entière correspondant aux bits lus, ou -1 si la fin du flux est atteinte prématurément
Throws:
  `IOException` - si une erreur de lecture survient

### closeFlux

public void closeFlux() throws IOException
Ferme le flux d'entrée sous-jacent.

Throws:
  `IOException` - si une erreur survient lors de la fermeture