Concaténation de flux

remy1066 Messages postés 51 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 31 octobre 2006 - 13 mars 2006 à 14:06
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 - 15 mars 2006 à 10:39
salut,



je possède une machine qui recoit plusieurs petits flux de données.

je souhaiterai rassembler tous ces petits flux pour en faire qu'un
seul, biensur en gardant l'ordre dans lequel ils sont arrivés. de
manière simplifiée, ca serait de les mettre les uns a la suite des
autres.



mon pb est que je ne vois pas tro comment mettre en oeuvre le traitement.

deja, est il possible de concatener plusieurs flux de différents InputStream pour les mettre dans un seul?



peut etre que la solution est de tt mettre dans un buffer et de tt
renvoyer a pres... mais je prefere utiliser cette solution en dernier
recours...



est ce que vous auriez une idée?



merci d'avance.

4 réponses

remy1066 Messages postés 51 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 31 octobre 2006
13 mars 2006 à 14:09
en relisant mon message, je me suis a percu que je n'etais pas suffisamment clair... dsl.



en fait, je recois plusieurs petits flux sur ma station de la part d'un
équipement, et je souhaiterai les rassembler pour en faire un gros flux
pour les rebalancer sur un autre équipement...



voila
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
13 mars 2006 à 14:33
Salut,

tu peux lire plusieurs flux et tous les écrire dans un seul. Si ton appli a un comportement séquentiel (tu reçois tous les flux les uns derrière les autres), il n'y a pas de pb particulier.
Si ton appli est mulithreadée, il faudra que tu mettes en place des contrôles pour éviter des écritures parallèles.
0
remy1066 Messages postés 51 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 31 octobre 2006
13 mars 2006 à 21:34
merci pour ta reponse.



tu peux me dire plus precisemment comment on procede...



est ce que ca a un reel avantage par rapport à tout stocker dans un buffer?
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
15 mars 2006 à 10:39
Ton flux de sortie sera un buffer, tant qu'on ne le lit pas, les données restent. Cela revient au même vu qu'il faudra que tu envoies le buffer.

Sinon, ben c'est simple, tu lis chaque flux et tu écris dans le flux de sortie. En gros ça donne ça, à répéter pour tous les flux en entrée.
InputStream fluxEntrant=...
BufferedOutputStream out = new BufferedOutputStream(fluxEntrant);
OutputStream fluxSortant=...
BufferedInputStream bufferedInputStream = new BufferedInputStream(fluxSortant);

byte[] buffer = new byte[4096];
int nb = 0;
while ((nb = bufferedInputStream.read(buffer)) != -1) {
out.write(buffer, 0, nb);
}
0
Rejoignez-nous