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

Langage Java Discussion :

rediriger system.out vers un String


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Par défaut rediriger system.out vers un String
    Bonjour.

    J'aimerai savoir comment faire pour récupérer le résultat qui s'affiche sur system.out directement dans une variable String pour pouvoir manipuler ce resultat ensuite.
    J'ai essayé avec les BufferedReader mais je n'arrive pas ...

    Merci d'avance.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Par défaut
    Salut,

    Tu peux utiliser la méthode : System.setOut (tonFlux)
    pour modifier la sortie standard, la classe StringWriter permet de récupérer le contenu au format String.
    Il faut juste convertir.

    voila a+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 230
    Par défaut
    Salut,

    j'aurais tendance à dire qu'il faut créer une nouvelle instance de PrintStream (par exemple tu crées une classe qui extends PrintStream et qui sera chargée de faire l'analyse que tu attends), et tu enregistre cette classe comme étant le System.out officiel en faisant System.setOut(new MonPrintStreamAnalyse());

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Regarde du côté de cette méthode
    Il te suffit de créer un PrintStream qui va bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sytem.setOut(PrintStream)
    Tu peux créer un PrintStream à partir de n'importe quel OutputStream (et donc en particulier d'un BufferedOutputStrem).

    [GRILLED] à vraiment pas grand chose
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Par défaut ...
    je suis désolé, je suis vraiment perdu la, et j'arrive à rien.

    Pourriez vous me donner le code exact qu'il faut écrire ?

    merci

  6. #6
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par Didine981
    Pourriez vous me donner le code exact qu'il faut écrire ?
    non, désolé: j'ai l'habitude de rarement donner le code complet de la réponse à une question, mais juste des pistes. C'est comme ça que tu apprendras à coder

    Eventuellement, commence à chercher comment faire fonctionner correctement des flux, et si tu n'y arrives pas, poste-nous ton code (sans oublier les balises appropriées) et là, on te donnera un coup de main pour le corriger.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Par défaut j'y arrive toujours pas ...
    j'ai essayé par moi même comme tu me l'a dit mais je n'y arrive toujours pas

    J'ai essayé pas mal de choses différents ais voici ou j'en suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BufferedOutputStream bos = new BufferedOutputStream(System.out);
    System.setOut(new PrintStream(bos));
    Mon problème est que j'arrive bien à rediriger le flux out vers un autre printstream que system.out (notamment vers un fichier), mais je n'arrive pas à récupérer ce flux directement dans une variable ...

    Je suis vraiment bloquée et ce n'est pas ca qui est interessant dans mon projet ...

  8. #8
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Bon... tu as essayé de trouver, voilà une solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PrintStream ps = new PrintStream(baos);
    System.setOut(ps);
    System.out.println("test");
     
    // Recupération de ton flux de sortie dans une variable
    String contenuOut = baos.toString();
     
    // Ne pas oublier de fermer tes flux proprement quand tu auras fini de t'en servir ;)
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Par défaut
    Merci beaucoup, je vais pouvoir continuer comme ca ...

  10. #10
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Et pour t'assurer que ma solution fonctionne, voila un code d'exemple complet commenté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public static void main(String[] args) {
    	// Sauvegarde de la sortie courante
    	PrintStream standardOutput = System.out;
     
    	// Redirection de la sortie courante vers un flux texte
    	ByteArrayOutputStream baos = new ByteArrayOutputStream();
    	PrintStream ps = new PrintStream(baos);
    	System.setOut(ps);
     
    	// Ecriture dans ce flux de deux messages
    	System.out.println("Un message sur la sortie courante");
    	System.out.println("Deuxième message sur cette sortie");
     
    	// On remet en place la sortie courante vers la console
    	System.setOut(standardOutput);
     
    	// On attend 3s pour s'assurer que le texte n'est ecrit
    	// dans la console qu'à l'instruction println() qui suit
    	try { Thread.sleep(3000); }
    	catch (InterruptedException e) {}
     
    	// On ecrit le contenu du flux a l'ecran
    	System.out.println(baos.toString());
     
    	// on ferme les flux avant de quitter
    	ps.close();
    	try { baos.close(); } catch (IOException e) {}
    }
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  11. #11
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    *cough* mettre StringWriter dans le PrintWriter plutot *cough*
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Rediriger System.out dans un JTextArea ?
    Par ThePhenom dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 24/09/2007, 13h51
  2. Redirection du System.out vers JEditorPane
    Par inest dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 07/05/2007, 16h41
  3. Detourner System.out vers une String
    Par Louis-Guillaume Morand dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 20/04/2007, 21h35
  4. Rediriger le System.out vers un JTextPane/JtextArea
    Par cw_nico dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 09/04/2006, 15h41
  5. [System]Rediriger le flux System.out sur un composant texte
    Par Grummfy dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 27/12/2005, 00h51

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