我将一些旧代码从Java移植到执行shell命令的Scala。 Scala代码使用' !!'来自scala.sys.process的方法。我遇到的问题是Scala代码将shell命令的stdout传递给scala的stdout,我真的只希望程序打印我用println()告诉它的内容。给出以下代码
import scala.sys.process._
class FidoWrapper(file: java.io.File){
val fido = ("fido " + file.getAbsolutePath).!!
}
object Wrapper{
def main(args: Array[String]){
val wrapper = new FidoWrapper(new java.io.File("src/main/resources/testfile.txt"))
println("===")
println("result: " + wrapper.fido.split(",")(0))
}
}
我得到以下输出:
FIDO v1.3.1 (formats-v70.xml, container-signature-20130501.xml, format_extensions.xml)
FIDO: Processed 1 files in 468.12 msec, 2 files/sec
===
result: OK
我希望拥有的是:
===
result: OK
这是我原来的Java代码所做的。无论如何我可以从shell进程重定向stdout,以便它不输出?有什么方法可以让这个过程沉默吗?
由于
答案 0 :(得分:2)
http://www.scala-lang.org/api/2.10.3/index.html#scala.sys.process.ProcessBuilder
!
您可以指定ProcessLogger
来处理所有IO。