Vous devez faire quelque chose comme ça :
PrintStream out = new PrintStream(new FileOutputStream("output.txt"));
System.setOut(out);
La deuxième déclaration est la clé. Elle change la valeur du supposé "final" System.out
pour être la valeur PrintStream fournie.
Il existe des méthodes analogues ( setIn
y setErr
) pour modifier les flux d'entrée et d'erreur standard ; reportez-vous à l'onglet java.lang.System
javadocs pour plus de détails.
Une version plus générale de ce qui précède est la suivante :
PrintStream out = new PrintStream(
new FileOutputStream("output.txt", append), autoFlush);
System.setOut(out);
Si append
es true
le flux sera ajouté à un fichier existant au lieu de le tronquer. Si autoflush
es true
le tampon de sortie sera vidé à chaque fois qu'un tableau d'octets est écrit, l'une des méthodes suivantes étant utilisée pour l'écrire println
est appelée, ou une \n
est écrit.
Je voudrais juste ajouter que c'est généralement une meilleure idée d'utiliser un sous-système de journalisation tel que Log4j , Logback ou la version standard de Java java.util.logging sous-système. Ceux-ci offrent un contrôle fin de la journalisation via des fichiers de configuration d'exécution, la prise en charge de fichiers journaux roulants, des flux de journalisation du système, etc.
Sinon, si vous n'êtes pas "logué", considérez ce qui suit :
-
Avec les shells classiques, vous pouvez rediriger la sortie standard (ou l'erreur standard) vers un fichier sur la ligne de commande ; par exemple
$ java MyApp > output.txt
Pour plus d'informations, reportez-vous à un tutoriel shell ou à une entrée de manuel.
-
Vous pouvez modifier votre application pour utiliser un out
transmis en tant que paramètre d'une méthode ou par le biais d'un singleton ou d'une injection de dépendance, plutôt que d'écrire dans un fichier de type System.out
.
Changer System.out
peut causer de mauvaises surprises pour d'autres codes de votre JVM qui ne s'attendent pas à ce que cela se produise. (Une bibliothèque Java correctement conçue évitera de dépendre de System.out
y System.err
mais vous pouvez être malchanceux).
1 votes
L'exemple de code que vous avez donné écrit la console entrée dans un fichier. Ce que vous essayez de faire n'est pas très clair. Pouvez-vous donner plus de détails ?
0 votes
J'ai de nombreuses sorties sur la console qui résultent de system.out.println. J'essaie d'écrire toutes ces sorties dans un fichier .txt.