Lire deux fois un InputStream revient � mettre le contenu de l'InputStream
en m�moire.
Une solution est de lire l'InputStream par bloc de byte et de placer cette
lecture dans un java.io.ByteArrayOutputStream
ensuite tu cr�es 2 java.io.BufferedInputStream depuis le tableau de byte
fournit par le ByteArrayOutputStream.
InputStream source;
byte[] buffer = new byte[1024];
ByteArrayOutputStream out = new
ByteArrayOutputStream(source.available())
int l
do {
l = soource.read(buffer);
if(l >0) {
out.write(buffer,0,l);
}
} while(l>0);
source.close();
source = null;
out.close();
InputStream source1 = new ByteArrayInputStream(out.toByteArray() );
InputStream source2 = new ByteArrayInputStream(out.toByteArray() );
out = null;
----------------------------------------
Erik Mazoyer
[EMAIL PROTECTED]
----- Original Message -----
From: "Fabien Grellier" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, November 20, 2002 12:17 AM
Subject: 2 lectures d'un InputStream
> 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.
>