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

时间:2017-01-12 11:29:09

标签: java file output

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

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

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

Français: Est-il possible en java de connaitre les fichiers desortiesspécifiéslorsde l'éxécutiond'unjar(sans parser les arguments)?

Par parmple dans le cas de l'éxecutiondecette commande:

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

1 个答案:

答案 0 :(得分:3)

将输出重定向到文件的方式是在操作系统级别完成,但不是在java级别完成,因此无法按照您的方式进行。

[Alernate way]

如果您将文件名显式地作为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]))));
  // ...

}