[Java] InputStream, Scanner, Pattern...

Fermé
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 20 déc. 2009 à 16:22
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 21 déc. 2009 à 15:09
Bonjour,

Je voudrais décomposer un fichier binaire en plusieurs blocs.
Je sais que chaque bloc commence par des header que je sais identifier.

Mon problème est le suivant :
Comment aller d'un bloc au suivant tout en conservant le bloc qui vient d'être lu ?

Un exemple de code et d'exécution serait :

boolean extraire(InputStream in, Stream buf, String ... header);
void traiter(Stream buf);

in="ZZZZabcXXXXdefghijkYYYYlmnopZZZZqrs"

while (extraire(in,buf,"XXXX","YYYY","ZZZZ"))
{ traiter(buf); }

=>

traiter("ZZZZabc");
traiter("XXXXdefghijk");
traiter("YYYYlmnop");
traiter("ZZZZqrs");

J'ai essayé avec des Scanner et les méthodes hasNext et next, mais je perds le bloc.

Bien sûr je pourrai le faire à la main (octet par octet) mais ce n'est pas très efficace et c'est surtout pas très objet...
De plus j'avoue ne pas trop savoir comment faire pour transformer mes arguments String ... header en Pattern pour l'appeler dans Scanner...

Je remercie toute personne qui saurai m'aiguiller vers les bonnes classes et/ou méthodes à utiliser pour mon problème.
A voir également:

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
21 déc. 2009 à 15:09
Dans la mesure où tous mes header sont de la forme 0x000001PQ je vais essayer avec un Scanner.useDelimiter(HEADER); où HEADER <=> 0x000001, et faire un switch de mon 0xPQ pour repérer les header qui me sont utiles ou non...

Si quelqu'un a une meilleure idée, je prends toujours ;-)
0