Java 重定向大量system.out.println';将s转换为.txt文件

Java 重定向大量system.out.println';将s转换为.txt文件,java,file-io,println,printstream,Java,File Io,Println,Printstream,可能重复: 在Java程序中,我有一个很长的方法(我认为发布这个方法并不重要,因为它对问题并不重要),它有大量println语句将状态更新打印到控制台 我不想将这些打印输出到控制台,而是希望它们进入一个txt文件,在那里我可以存储它们并在以后查看它们 是否有一种简单的方法可以重定向输出,而不必手动遍历每个println语句 如果没有,最好的方法是什么 将额外参数添加到方法,PrintStream out 在方法中用out搜索并替换System.out 完成了 (使用围绕FileOutputSt

可能重复:

在Java程序中,我有一个很长的方法(我认为发布这个方法并不重要,因为它对问题并不重要),它有大量println语句将状态更新打印到控制台

我不想将这些打印输出到控制台,而是希望它们进入一个txt文件,在那里我可以存储它们并在以后查看它们

是否有一种简单的方法可以重定向输出,而不必手动遍历每个println语句

如果没有,最好的方法是什么

  • 将额外参数添加到方法
    ,PrintStream out
  • 在方法中用
    out
    搜索并替换
    System.out
  • 完成了
  • (使用围绕FileOutputStream的PrintStream调用方法)

  • 我以前不得不这样做,它不是很整洁,我希望您不是为了最后一段代码而这样做,但我做到了:

    PrintStream ps = new PrintStream("\file.txt");
    PrintStream orig = System.out;
    System.setOut(ps);
    //TODO: stuff with System.out.println("some output");
    System.setOut(orig);
    ps.close();
    

    系统类有一个静态方法,
    System.setOut(PrintStream out)
    。您所要做的就是创建自己的PrintStream,将其写入到文件中,然后将其填充到这个方法中,就一切就绪了


    更好的不太脆弱的解决方案:不要使用System.out.printFoo(…),而只需使用记录器,并根据当时的用途更改日志记录级别。

    您当然可以重定向标准输出。查看中的系统设置(打印流输出)。PrintStream是您自己的一个输出到文件中的文件。@HovercraftFullOfEels这是一个完全可升级的答案:)@dasblinkenlight:我已经达到了我的最高投票接收限制,不管怎样,我100%确定这个问题是重复的,事实上已经被问过很多次了,但是我太懒了,找不到重复的。它能用。谢谢你的提示