Java运行时exec

时间:2013-11-25 14:33:57

标签: java ubuntu

我正在尝试将各种xls文件转换为csv。当我在终端中执行以下命令时,它可以正常工作

    libreoffice --headless --convert-to csv --outdir 
/Data/edennis/ /Data/edennis/2013-10/*.xls

但是当我尝试使用运行时exec时却没有。

我做过的研究:

  1. 根据这个线程Java Runtime exec() behavior不能执行像echo这样的系统命令,但libreoffice不是系统命令,不是可执行程序吗?
  2. Java runtime exec这个主题建议使用processBuilder,但不确定这是否是我需要做的事情。
  3. 根据Java Doc
  4.   

    EXEC:   使用。在单独的进程中执行指定的字符串命令   指定的环境。

1 个答案:

答案 0 :(得分:3)

首先,Runtime.exec没有理由不能运行/ bin / echo(如果可用)。

其次,是的,使用ProcessBuilder。

第三,您的问题源于对*.xls等文件模式使用shell语法。 Runtime.exec调用您指定的程序,而不是调用文件名扩展的shell。如果需要进行文件名扩展,请运行如下的shell:

"sh -c libreoffice --blabla *.xls"