java - 在java中是否有可能知道执行jar时指定的输出文件?

标签 java file output

英语: 在 java 中是否可以知道执行 jar 时指定的输出文件(不解析参数)?例如使用此命令:

java -jar application.jar 1> output.log 2> error.err

Java 可以知道默认输出在 output.log 中,错误在 error.err 中?

法语: Est-il possible en java de connaitre les fichiers de sorties spécifiés lors de l'écécution d'un jar (sans parser les arguments)?

例举 dans le cas de l'éexecution de cette commande :

java -jar application.jar 1> output.log 2> error.err 

最佳答案

您将输出重定向到文件的方式是在操作系统级别完成的,而不是在 Java 级别完成的,因此您不可能采用这种方式。

[替代方式]

唯一可行的方法是将文件名作为 java arg 显式发送到程序并手动更改系统输出流。

运行命令

java -jar application.jar output.log error.err

主类

public static void main(String[] args){
  // file names will be available as args[1] and args2[]
  String outputFileName = args[1];
  String errorOutputFileName = args[2];
  System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream(args[1]))));
  System.setErr(new PrintStream(new BufferedOutputStream(new FileOutputStream(args[2]))));
  // ...

}

关于java - 在java中是否有可能知道执行jar时指定的输出文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41612089/

相关文章:

java - Java toString 中的 NullPointerException

c++ - 在整个程序执行过程中存储文件句柄有什么缺点吗?

java - NetBeans 和 Eclipse FileNotFoundException

C++ linux 调试跟踪不出来

c - 如何将代码从终端重定向到绘图应用程序?

java - 如何从 Java 将多个参数传递到 .vbs 文件

java - 递归获取NodeAt java

java - JTable Actionlistener 单击带有参数的行

Ruby MRI 1.8.7 - 文件写入线程安全

Fortran 中输出字符串和值的格式