在Scala中发出本机系统命令

在Scala中发出本机系统命令,scala,system,command,Scala,System,Command,我想从Scala程序发出一个本机系统命令,并可能捕获输出。(“ls”出现在脑海中。可能有其他方法可以在不发出命令的情况下获取目录信息,但这与我的问题无关。)它将对应于Python中的os.system(…) 我看过“Scala编程”。我看过O'Reilly的“Scala编程”。我在谷歌上搜索了几个术语组合。还没有运气。有人能给我举个例子,或者给我指一个我可以找到例子的资源吗?Scala在这方面与Java没有什么不同,因为您可以使用Scala的互操作功能调用任何Java API函数。例如,请参见。

我想从Scala程序发出一个本机系统命令,并可能捕获输出。(“ls”出现在脑海中。可能有其他方法可以在不发出命令的情况下获取目录信息,但这与我的问题无关。)它将对应于Python中的os.system(…)


我看过“Scala编程”。我看过O'Reilly的“Scala编程”。我在谷歌上搜索了几个术语组合。还没有运气。有人能给我举个例子,或者给我指一个我可以找到例子的资源吗?

Scala在这方面与Java没有什么不同,因为您可以使用Scala的互操作功能调用任何Java API函数。例如,请参见。

Scala与Java具有完全的互操作性。因此,您可以像从Java一样从Scala调用系统命令。请参阅以了解如何从Java调用系统命令。

最好的方法是使用


您可以使用
sys.process
轻松完成:

执行系统命令并获取其状态代码(退出代码):

import sys.process._

val result = "your_command" !
println("result = "+result) // result contain zero for success or non zero for fail
import sys.process._

val result = "your_command" !!
println("result = "+result) // result contain output from the command
从系统命令获取输出:

import sys.process._

val result = "your_command" !
println("result = "+result) // result contain zero for success or non zero for fail
import sys.process._

val result = "your_command" !!
println("result = "+result) // result contain output from the command

您还有几个其他选项(管道、重定向STDOUT、附加到STDOUT和…),您可以看到。

您不应该标记正确的答案吗。这将是一件很好的事情,它会给那些在将来看到你的问题的人一个额外的动力去回答完成。感谢您的提醒。匿名用户的评论:同时检查
scala.sys.process.process
@Anne谢谢,我已经更新了答案,指向ScalaDoc。这个包就是进程库,它已经进入了标准库。请看其他答案,Scala的库使事情变得更加方便。