首页 > 解决方案 > 使用不同的工作目录和输入重定向在 Scala 上运行进程

问题描述

似乎不可能使用另一个工作目录和输入重定向在 Scala 上运行进程。

这就是我通常在 Scala 上使用默认目录运行进程的方式:

Process(cmd, new File("someDir")).!!

这就是我通常使用输入重定向在 Scala 上运行进程的方式:

("someCmd -someParam" #< "myFile.txt").!!

似乎两者不可能结合..

我错过了什么吗?

标签: scalaprocessprocessbuilder

解决方案


#<是一个方法ProcessBuilder,所以你可以调用:

(Process("someCmd -someParam", new File("someDir")) #< new File("myFile.txt")).!!

请注意,File您作为输入传递的 必须相对于 Scala 进程的工作目录进行指定。但是,如果您将文件路径作为参数传递给命令,则路径必须相对于命令的工作目录。

因此,对于myFile.txtinside someDir,调用可能如下所示:

(Process("someCmd -someParam", new File("someDir")) #< new File("someDir/myFile.txt")).!!

但,

Process("cat myFile.txt", new File("someDir")).!!

推荐阅读