如何在没有Java Web Start的情况下将Java控制台输出传递给文件?
我想将Java控制台输出(由System.out.println
及其同类产生)传输到一个文件。 我在这里找到了一个很好的解决方案来启用Java跟踪,但这对我不起作用(Mac OS X或Windows上的任何位置都没有显示日志文件)。 据我所知,这是因为我使用的是没有Java Web启动的普通Java应用程序。 那么我怎么能用不使用Java web start的Java代码呢? 理想情况下,我想要一个不需要修改代码的解决方案。
您不需要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上使用命令重定向 。
java YourMainClass > home.txt
如果需要运行jar,可以使用java应用程序启动器的-jar
选项。
java -jar /your/path.jar > /output/file/path.txt
如果从命令行启动它,则可以使用重定向stdout和stderr进入文件,如下所示:
java -jar application.jar >file.txt 2>&1
您必须将application.jar替换为您的应用程序的jar文件。
有没有办法在不修改代码的情况下完成它? 我想为已编译的应用程序执行此操作。
如果您想在不更改代码的情况下执行此操作,那么您最好的选择是:
$ java com.example.MyMainClass > filename
如果要在后台运行问题,请执行此操作 –
nohup java -jar yourprogram.jar > log.txt 2>&1 &