2016-03-02 1 views
2

Mon code nécessite que le programme imprime un tableau de nombres dans un fichier texte.Comment alterner entre l'impression en console et l'impression dans un fichier texte

Ainsi, au cours de ces périodes, je veux changer mon flux de sortie:

System.setOut(new PrintStream(new FileOutputStream("data.txt"))); 

, comment pourrais-je revenir donc à l'impression dans la console?

Toute aide serait appréciée. Merci.

+0

Pourquoi utiliser ' System.out.print' au lieu de passer un 'PrintStream' au code d'impression et d'impression ng à 'PrintStream' est passé à la place? Si ce n'est pas possible: stocker 'System.out' en variable, changer' System.out', imprimer quelque chose, régler 'System.out' sur une ancienne valeur. – fabian

Répondre

0

Cet exemple peut vous aider:

https://github.com/dreedyman/Rio/blob/master/rio-start/src/main/java/org/rioproject/start/LogManagementHelper.java#L45

static void redirectIfNecessary() { 
    /* If we have been exec'd by Rio (such as a service that has been declared to be forked, 
    * stdout and stderr have already been redirected */ 
    if(System.getenv("RIO_EXEC")==null && System.console()==null) { 
     redirectToLogger(); 
    } 
} 

static void redirectToLogger(){ 
    System.setOut(new PrintStream(System.out){ 
     public void print(String s){ 
      stdOutLogger.info(s); 
     } 
    }); 
    System.setErr(new PrintStream(System.err){ 
     public void print(String s){ 
      stdErrLogger.error(s); 
     } 
    }); 
} 
0

L'exemple suivant pourrait être utile ....

addWindowListener(new WindowAdapter() { 
     public void windowActivated(WindowEvent e) { 
//   EditorConsole.systemOut.println("editor window activated"); 
      base.handleActivated(Editor.this); 
//   mode.handleActivated(Editor.this); 
      fileMenu.insert(base.getSketchbookMenu(), 2); 
      fileMenu.insert(base.getRecentMenu(), 3); 
//   fileMenu.insert(mode.getExamplesMenu(), 3); 
      sketchMenu.insert(mode.getImportMenu(), 4); 
      mode.insertToolbarRecentMenu(); 
     } 

     // added for 1.0.5 
     // http://dev.processing.org/bugs/show_bug.cgi?id=1260 
     public void windowDeactivated(WindowEvent e) { 
//   EditorConsole.systemErr.println("editor window deactivated"); 
//   mode.handleDeactivated(Editor.this); 
      fileMenu.remove(base.getSketchbookMenu()); 
      fileMenu.remove(base.getRecentMenu()); 
//   fileMenu.remove(mode.getExamplesMenu()); 
      sketchMenu.remove(mode.getImportMenu()); 
      mode.removeToolbarRecentMenu(); 
     } 
     }); 

code complet: http://code.openhub.net/file?fid=LfGSIGX0O67nvFyO4lEKQDA5zxE&cid=80HR_JtEBgg&s=How%20to%20alternate%20between%20printing%20in%20console%20and%20printing%20in%20a%20text%20file&pp=0&fl=Java&ff=1&filterChecked=true&fp=1237&mp,=1&ml=0&me=1&md=1&projSelected=true#L0