1

我正在尝试在 linux/ubuntu/gnome 中使用 Java 运行时 exec 运行 perl 命令。该命令会生成一个 pdf 文件,但会将其保存在我的主文件夹中。exec 方法是否可以为执行的命令设置输出路径?提前致谢。

4

2 回答 2

2

exec方法仅在操作系统上运行命令,因此您需要更改正在运行的命令,而exec不是“Java”本身中的任何内容。

有几种可能:

  1. 更改 java 程序的工作目录。正在保存在您的.pdf工作目录中,因为这是运行程序的位置。

    不幸的是,在程序启动后更改此值并不简单。但是,在程序开始之前进行更改是微不足道的;只需在启动程序之前更改工作目录。

  2. 在您的主目录中创建文件后,将其移动到所需位置。

  3. 更改命令,使其包含目标位置。您的 perl 脚本可能有一个选项,可以让您将其输出保存到某个位置(通常是-o--output)。使用它,您的程序将从:

     Runtime.exec("perl someprogram");
    

    类似于:

      Runtime.exec("perl someprogram -o /path/to/some.file")
    
  4. 如果没有执行此操作的选项,您也许可以使用“输出重定向”。

    尝试以下内容作为您的论点:

      Runtime.exec("perl someprogram > /path/to/some.file")
    

不幸的是,在不了解您的情况的更多细节的情况下,我无法提供更具体的建议。

虽然每种方法都有优点和缺点,但最好只实施您最了解的方法;如果你不能让一个工作,尝试另一个。


一个很好的免费在线学习资源是Introduction to Linux: A Hands On Guide

第 2.2 节有cd您可以使用的详细信息1.

第 3.3 节,第 3 节讲授mv命令,这将在2..

5.1 节是关于 I/O 重定向的。了解“输出重定向”和>操作符对于4..

对于3.,您必须查阅您正在使用的 perl 程序的文档。

于 2011-03-06T18:40:01.263 回答
1

您可以修改 Perl 脚本以接受输出的绝对路径。

您可以尝试使用exec(java.lang.String[], java.lang.String[], java.io.File)其中 File 是执行命令的目录来设置工作目录。

如果一切都失败了,您总是可以将生成的文件从主目录复制到您的最终位置。

于 2011-03-06T18:23:55.103 回答