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 :

Récupérer sortie standard après redirection vers un fichier.


Sujet :

Entrée/Sortie Java

  1. #1
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut Récupérer sortie standard après redirection vers un fichier.
    Salut !

    J'ai un pti problème, j'ai beau fouiller, je ne trouve pas...
    Voila, j'utilise JFlex (là n'est pas le problème...) pour analyser un fichier.
    Au début de mon scan j'affiche le temps dans la console.
    Puis je redirige la sortie standard dans un fichier.
    Enfin je ferme ce flux.
    J'aimerai réafficher le temps dans la console à nouveau (à la fin du scan) mais ca ne fonctionne pas... Ca ne l'écrit même pas dans le fichier de log...

    Voici mon code (au cas où)

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    /* decParser.flex */
    import java.io.*;
    ...
    %{
    // time start
    private long timeStart = System.currentTimeMillis();
    // file output stream
    FileOutputStream fos;
    /**
      * redirect sdout to log file.
      */
    public void openStream(){
    	try {
    		fos = new FileOutputStream("./parsing.log",true);
    		System.setOut(new PrintStream(fos,true));
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    }
    /**
      * closes the stream.
      */
    public void closeStream(){
    	try {
    		fos.close();
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    }
     
    %}
    /* Called at start of parsing */
    %init{
    	long timeStart = System.currentTimeMillis();
    	System.out.println("start..."+timeStart);
    	openStream();
    %init}
    /* Called at end of file. */
    %{eof
    	closeStream();
    	long timeEnd = System.currentTimeMillis();
    // C'EST ICI LE PROBLEME
    	System.out.println ("\nEnd of file...\n"+nbTimeStamp +" timestamps found in "+((double)((timeEnd-timeStart)/1000))+" s. "+nbLines+" lines read");
    %eof}
    ...
    Merci d'avance !
    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  2. #2
    Membre régulier Avatar de Actarus78
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 87
    Points : 118
    Points
    118
    Par défaut
    Salut,

    Je vais supposer que l'espace qu'il y a juste après le ...println est une faute de frappe sur ce post
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println ("\nEnd of file...\n"+nbTimeStamp +" timestamps found in "+((double)((timeEnd-timeStart)/1000))+" s. "+nbLines+" lines read");
    A partir de là, je vais te dire que c est normale que tu ne vois pas ton affichage ni dans ton log, ni dans ta fenetre console.

    Dans l'ordre ca donne:

    Appel d' openStream(); --> tu rediriges ta sortie dans un fichier
    Appel de closeStream(); --> tu fermes le flux vers ton fichier de log
    System.out.println --> ta sortie est tj redirigée vers ton flux fichier qui est fermé.

    Il te faut soit appeler closeStream() après ton dernier appel du System.out (tu aurras l'info donc dans ton log) soit de repositioner ton flux vers la sortie courrante (sortie terminale) dans ta methode closeStream.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void closeStream(){ 
       try { 
          fos.close(); 
          //Log are set to the console      
          System.setOut(System.out);
       } catch (Exception e) { 
          e.printStackTrace(); 
       } 
    }

  3. #3
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Salut et merci pour ta réponse !

    Mais ca ne fonctionne pas...
    Je n'ai toujours rien dans ma console... Si je met la ligne que tu m'as donné avant le close, ca écrit dans le fichier, si je la met après, je n'ai plus rien...

    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  4. #4
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    J'ai trouvé,
    en fait, je sauvegarde l'ancien PrintStream dans une variable et je la remet à la fin...

    Merci !
    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

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

Discussions similaires

  1. récupérer la sortie standard apres coup
    Par sone47 dans le forum Langage
    Réponses: 2
    Dernier message: 19/10/2009, 09h27
  2. redirection vers un fichier a partir d'une servlet
    Par air75 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 03/02/2008, 21h34
  3. rediriger la sortie standard d'eclipse dans un fichier
    Par christianf dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 25/10/2007, 16h29
  4. [MySQL] Récupérer une table et redirection vers une page
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 20/03/2007, 16h44
  5. Rediriger la sortie d'un programme vers un fichier
    Par olive_le_malin dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/11/2005, 09h55

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