Scala sys.process非零退出值

时间:2015-01-14 07:11:34

标签: scala process

比较不同的文件

import sys.process._"
"diff data.txt myFile.txt" !

退出代码按预期证明非零,

< 1
---
> 123
res1: Int = 1

然而,试图收集实际差异

val d = "diff data.txt myFile.txt" !!

java.lang.RuntimeException: Nonzero exit value: 1
  at scala.sys.package$.error(package.scala:27)
  at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.slurp(ProcessBuilderImpl.scala:132)
  at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.$bang$bang(ProcessBuilderImpl.scala:102)
  ... 33 elided

要问如何将差异提取到String(给定的小文件)?

1 个答案:

答案 0 :(得分:5)

我认为您需要使用lineStream_!方法,而不是!。使用作为diff命令输出的行流,您可以执行任何操作:打印,将其转换为列表,数组或其他任何需要的内容。

val st = "diff input.txt output.txt" lineStream_!
// now st is a Stream[String]
println(st.mkString("\n"))

编辑:我认为该方法是在lines_!之前调用的。现在它被弃用了。以防万一你使用旧的Scala版本。