我正在尝试在 linux/ubuntu/gnome 中使用 Java 运行时 exec 运行 perl 命令。该命令会生成一个 pdf 文件,但会将其保存在我的主文件夹中。exec 方法是否可以为执行的命令设置输出路径?提前致谢。
2 回答
该exec
方法仅在操作系统上运行命令,因此您需要更改正在运行的命令,而exec
不是“Java”本身中的任何内容。
有几种可能:
更改 java 程序的工作目录。正在保存在您的
.pdf
工作目录中,因为这是运行程序的位置。不幸的是,在程序启动后更改此值并不简单。但是,在程序开始之前进行更改是微不足道的;只需在启动程序之前更改工作目录。
在您的主目录中创建文件后,将其移动到所需位置。
更改命令,使其包含目标位置。您的 perl 脚本可能有一个选项,可以让您将其输出保存到某个位置(通常是
-o
或--output
)。使用它,您的程序将从:Runtime.exec("perl someprogram");
类似于:
Runtime.exec("perl someprogram -o /path/to/some.file")
如果没有执行此操作的选项,您也许可以使用“输出重定向”。
尝试以下内容作为您的论点:
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 程序的文档。
您可以修改 Perl 脚本以接受输出的绝对路径。
您可以尝试使用exec(java.lang.String[], java.lang.String[], java.io.File)
其中 File 是执行命令的目录来设置工作目录。
如果一切都失败了,您总是可以将生成的文件从主目录复制到您的最终位置。