Bonjour,

J'ai le problème suivant : je souhaite pouvoir lire 2 fois un InputStream
dans son intégralité.

J'ai essayé pour ce faire d'utiliser la classe BufferedInputStream, avec les
méthodes mark et reset.

Voici mon code :
  java.io.BufferedInputStream oBufStream = new
java.io.BufferedInputStream(aStream);

  System.out.println("taille : " + oBufStream.available());
  oBufStream.read();
  oBufStream.mark(1494);
  oBufStream.reset();
  System.out.println("taille : " + oBufStream.available());

/* premiere lecture de mon InputStream */
  mIdentifiantsMessage.read(oBufStream);

/* remise jusqu'à la marque de mon stream */
  oBufStream.reset();

/* deuxieme lecture */
  mObjetsMessage.read(oBufStream);

Le résultat de ce code affiche :
taille : 1493
taille 1492.

C'est à dire que je perd le premier caractère de mon flux pour pouvoir le
marquer. Du coup, derrière, mon traitement plante.
Si je ne mets pas de read() sur mon flux, alors après la première lecture,
le flux est fermé, et je ne peux plus le re-lire.

Quelqu'un aurait il une idée pour pouvoir lire le même flux dans son
intégralité 2 fois ?

Merci d'avance,

Fabien.

Répondre à