IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

lire un flux 2 fois


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut lire un flux 2 fois
    Bonjour,

    pour les besoins d'un algorithme, j'ai besoin de lire un flux 2 fois (je ne peux pas le recréer).
    J'ai fait des recherches sur le net et la javadoc, et j'ai vu qu'il serai possible de s'en tirer en utilisant les méthodes mark() et reset() de la famille d'objets inputstream.

    Malheureusement je n'arrive pas à m'en sortir !!!

    J'utilise la classe BufferedInputstream qui supporte mark() et reset(), mais je n'arrive pas à obtenir ou calculer de valeur "sûre" et fiable pour utiliser le mark() puis le reset().

    QQn aurait il une idée ou solution ?

    merci par avance !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    faudrait voir comment tu compte lire deux fois (l'un après l'autre? en parallèle?)

    La méthode la plus simple serait de créer ta propre implémentation de inputstream qui fait exactement ce boulot (prendre un stream et permettre à plusieurs personnes de le lire). ca consisterais simplement, en backend, à lire dans un inputstream en stockant au fur et à mesure dans un buffer, pour que les autres lecteurs aient aussi accès à cette informations. En pratique, c'est du boulot. Lire d'abord tout le stream vers un fichier puis seulement commencer le traitement en lisant plusieurs fois le fichier serait peut être approprié et, dans tous les cas, beaucoup plus facile à implémenter

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    ba mon soucis est que je vais lire le flux 2 fois, mais l'une après l'autre .....

    Et le stocker en entier risque d'être couteux je pense en mémoire :S

    personne n'a dèjà réussi à utiliser mark() et reset() correctement ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    y a pas de miracle, mark et reset stockent en mémoire. Si c'est trop couteux en mémoire, stocke tout ca sur une fichier disque et lit le 2 fois. Si tu compte lire ton flux 2 fois l'une après l'autre, faudra bien stocker l'entièreté quelque part.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    faudra bien stocker l'entièreté quelque part
    suis d'accord

    donc je pense que je vais sauvegardé dans un fichier .....


    Merci

    PS : je vous tiens au courant

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par tchize_ Voir le message
    y a pas de miracle, mark et reset stockent en mémoire.
    De plus cela dépendent fortement de l'implémentation du flux, comme l'indique la méthode markSupported()


    Par curiosité : c'est quoi ce flux et pourquoi as-tu besoin de le lire deux fois ???

    a++

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    Salut adiGuba,

    Mon flux est du HTML.

    Et j'ai besoin de le lire plusieurs fois, car un traitement séquentiel serait trop compliqué

Discussions similaires

  1. [System] cherche un moyen de lire le flux
    Par Allensan dans le forum Langage
    Réponses: 3
    Dernier message: 03/07/2006, 15h59
  2. [ThunderBird] Refuse de lire les flux RSS depuis 3jours
    Par Swoög dans le forum Thunderbird
    Réponses: 4
    Dernier message: 27/06/2006, 21h33
  3. Comment lire un flux rss en asp
    Par ch_lensois dans le forum ASP
    Réponses: 2
    Dernier message: 20/06/2006, 11h32
  4. XMLhttp lire un flux xml
    Par Larson dans le forum ASP
    Réponses: 3
    Dernier message: 13/09/2005, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo