有没有办法更改标准输出流,以便将其写入某个文件而不是Java中的控制台???
答案 0 :(得分:7)
使用System.setOut(PrintStream out);
答案 1 :(得分:3)
您可以做一些事情。 要直接回答您的问题,您可以执行类似
的操作System.setOut(new FileOutputStream(myFile));
但是,我会使用日志记录框架来写入文件。首先,在某处初始化您的记录器:
FileHandler handler = new FileHandler("mylogfile.txt", true); // True to append to file, false to overwrite.
Logger logger = Logger.getLogger(getClass().getName());
logger.addHandler(handler);
然后,您可以使用每次要打印时调用的方法,例如:
public void output(String message, boolean toConsole, boolean toFile) {
if (toConsole) {
System.out.println(message);
}
if (toFile) {
m_logger.info(message); // Your instance variable of Logger.
}
}
你可以随心所欲地做到这一点,但这就是一个例子。您可以将toConsole和toFile简单化为您配置的静态布尔值,而不是为每个方法调用指定。
答案 2 :(得分:2)
System.setOut(new PrintStream(file))
但使用记录方法是一种更好的方法。
答案 3 :(得分:1)
答案 4 :(得分:1)
以下适用于我。
System.setOut(new PrintStream(new FileOutputStream(you file name)));
答案 5 :(得分:0)
您可以使用System.setOut()
来执行此操作