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 :

Detourner System.out vers une String


Sujet :

Entrée/Sortie Java

  1. #1
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 254
    Points
    28 254
    Par défaut Detourner System.out vers une String

    oui oui, c'est bien ce que je veux faire.

    Pour faire du requetage SPARQL sur du triple-store RDF made in Jena, je suis obligé à un moment donné de transformer le resultset en quelque chose d'utilisable. Pour cela je dois utiliser la methode: ResultSetFormatter()


    celle-ci permet d'avoir les resultets de deux manieres:
    ResultSetFormatter.out(outputstream, query ) qui me sort dans la console un truc tout formaté tout beau genre un tableau en ASCII
    ------
    -TATA
    -------
    - données..
    bref, c'est clair

    ou
    ResultSetFormatter.asXMLString(query)
    qui me ressort les meme données sous forme de fichier XML pas forcement aisé à parser avec DOM


    L'objectif final étant de l'afficher dans une JtextArea qui servira de console.


    J'ai trouvé ceci (2eme source) :http://java.developpez.com/sources/?page=texte
    mais ca ne me convient pas pour la simple raison que j'ai plusieurs JtextArea et là, je rebalance le flux vers une seule.

    Je pensais donc à rebalancer le flux vers une chaine avec laquelle je setText ma JtextArea.
    Est-ce faisable?

    sinon tanpis, je bidouillerai mais bon..

    d'avance merci

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux simplement utiliser un ByteArrayOutputStream :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ByteArrayOutputStream baos = new ByteArrayOutputStream ();
    ResultSetFormatter.out(baos , query);
    String result = baos.toString(); // ou toString(charsetName) si tu veux spécifier l'encodage
    a++

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 254
    Points
    28 254
    Par défaut
    j'ai du rajouté un cast explicite mais ca marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ByteArrayOutputStream baos = new ByteArrayOutputStream ();
    ResultSetFormatter.out((OutputStream)baos ,results, query);
    String result = baos.toString();
    merci

    ps: dire que sur le net, on trouve plusieurs fois, " c'est totalement impossible, on peut ecrire dans outputstream, pas y lire". c'est pas faux mais ca se feinte mine de rien ^^

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand
    j'ai du rajouté un cast explicite mais ca marche
    C'est bizarre car normalement un ByteArrayOutputStream n'as pas à être casté explicitement en OutputStream !?!

    Citation Envoyé par Louis-Guillaume Morand
    ps: dire que sur le net, on trouve plusieurs fois, " c'est totalement impossible, on peut ecrire dans outputstream, pas y lire". c'est pas faux mais ca se feinte mine de rien ^^
    Ben la réponse est sur developpez.com c'est normal

    En fait beaucoup de gens considère les InputStream/OutputStream comme des accès aux fichiers, comme les FILE* du C.
    Or c'est bien plus que cà. Il s'agit de flux définissant une source/destination de données. Derrière il peut y avoir n'importe quoi (fichiers, sockets, espace mémoire, etc...).

    Donc on peut vraiment manipuler comme on veut

    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recordset vers une String
    Par Vakarm dans le forum ASP
    Réponses: 1
    Dernier message: 27/05/2008, 19h06
  2. c:out avec une string qui contient du html
    Par MooGle dans le forum Struts 1
    Réponses: 2
    Dernier message: 28/08/2007, 15h45
  3. rediriger system.out vers un String
    Par Didine981 dans le forum Langage
    Réponses: 10
    Dernier message: 31/07/2007, 03h18
  4. Redirection du System.out vers JEditorPane
    Par inest dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 07/05/2007, 17h41
  5. Rediriger le System.out vers un JTextPane/JtextArea
    Par cw_nico dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 09/04/2006, 16h41

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