问题描述
似乎不可能在具有其他工作目录并输入重定向的Scala上运行进程。
这通常是我在默认目录下的Scala上运行进程的方式:
Process(cmd,new File("someDir")).!!
这是我通常使用输入重定向在Scala上运行流程的方式:
("someCmd -someParam" #< "myFile.txt").!!
似乎不可能将两者结合起来。
我想念任何东西吗?
解决方法
#<
是ProcessBuilder
上的一种方法,因此您可以调用:
(Process("someCmd -someParam",new File("someDir")) #< new File("myFile.txt")).!!
请注意,必须相对于Scala进程的工作目录指定您作为输入传递的File
。但是,如果相反将文件路径作为参数传递给命令,则该路径必须相对于命令的工作目录。
因此,对于myFile.txt
中的someDir
,呼叫可能看起来像这样:
(Process("someCmd -someParam",new File("someDir")) #< new File("someDir/myFile.txt")).!!
但是
Process("cat myFile.txt",new File("someDir")).!!