重定向" System.out.print"将Java程序输出到txt文件

时间:2018-06-06 05:00:24

标签: java

在程序中重定向打印输出的代码:

   try
   {
       System.out.println("Print on console");

       // Store console print stream.
       PrintStream ps_console = System.out;

       File file = new File("C:/Users/John/Desktop/compiletest/output" + trialNum + ".txt");
       FileOutputStream fos = new FileOutputStream(file);
       PrintStream ps = new PrintStream(fos);
       System.setOut(ps);
       System.out.println("Print in the file !!");

       // Set console print stream.
       //System.setOut(ps_console);
       System.out.println("Console again !!");
    }
    catch(Exception e)
    {
        System.out.println("Mission failed, we'll get em next time");
    }

如果在我想要重定向其输出的程序中实现此方法,则此方法可以正常工作。在我的情况下,我想要一个单独的类,将某个程序的输出重定向到一个txt文件。

如果有更简单的方法来完成这项任务,我非常倾向于听到。

3 个答案:

答案 0 :(得分:1)

这似乎是日志框架的完美用法示例。

您可以使用许多其他库。一般情况下,最好为文件使用单独的流 - 如果必须重定向System.out,在更改原始PrintStream之前保留原始PrintStream ORIGINAL_SOUT = System.out; System.setOut(ps); System.out.println("ABC"); // Uses file ORIGINAL_SOUT.println("ABC"); // Uses console 会很有用如果您需要,仍然可以写入控制台:

private static final Logger logger = LoggerFactory.getLogger(YourClass.class);

logger.debug("A message at DEBUG level");
logger.info("A message at INFO level");
logger.warn("A message at WARN level");
logger.error("A message at ERROR level");

日志框架的简单用法示例(来自第一个链接库):

{{1}}

答案 1 :(得分:0)

我认为您应该创建临时功能,以暂时保存和存储您的数据,然后根据需要执行您的交易。最后,您可以将数据永久存储在任何位置。这是我所知道的最着名的方法。您应该查看链接以便于理解。

http://www.daveoncsharp.com/2009/09/how-to-use-temporary-files-in-csharp/

答案 2 :(得分:0)

记录软件(如SLF4J,Log4J等)是更好的选择。 它有不同的方法来创建文件,不同的文件格式,滚动的appender(基于日期/序列/大小),基于优先级的日志