我想将Java控制台输出(由System.out.println
及其同类产生)输出到文件中。我发现了一个很好的解决方案here来启用Java跟踪,但这对我不起作用(在Mac OS X或Windows上的任何位置都没有显示日志文件)。据我所知,这是因为我使用的是没有Java Web启动的普通Java应用程序。那么如何使用不使用Java Web start的Java代码来实现这一目标呢?理想情况下,我想要一个不需要修改代码的解决方案。
答案 0 :(得分:17)
您不需要Java Web Start来执行任何此操作。只需将System.out
设置为FileOutputStream
。
System.setOut(new PrintStream(new FileOutputStream(fileName)));
其中fileName
是您要传递给的文件的完整路径。
public static void main(String[] args) throws Exception { //Read user input into the array
System.setOut(new PrintStream(new FileOutputStream("home.txt")));
System.out.println("hello");
}
将hello\n
写入当前工作目录中名为home.txt
的文件。
如果无法修改代码,请在Windows 7上使用command redirection。
java YourMainClass > home.txt
如果您需要运行jar,可以使用java application launcher的-jar
选项。
java -jar /your/path.jar > /output/file/path.txt
答案 1 :(得分:17)
如果从命令行启动它,则可以按如下方式将stdout和stderr重定向到文件中:
java -jar application.jar >file.txt 2>&1
您必须使用应用程序的jar文件替换 application.jar 。
答案 2 :(得分:1)
有没有办法在不修改代码的情况下做到这一点?我想为已编译的应用程序执行此操作。
如果你想在不改变代码的情况下这样做,那么你最好的选择就是:
$ java com.example.MyMainClass > filename
答案 3 :(得分:0)
如果要在后台运行问题,请执行此操作-
nohup java -jar yourprogram.jar > log.txt 2>&1 &