Scala sys.process 非零退出值
Scala sys.process nonzero exit values
关于比较不同的文件
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
(给定小文件)?
我认为您需要使用 lineStream_!
方法,而不是 !
。使用作为 diff
命令输出的行流,您可以做任何您想做的事情:打印它、将其转换为列表、数组或您需要的任何其他内容。
val st = "diff input.txt output.txt" lineStream_!
// now st is a Stream[String]
println(st.mkString("\n"))
编辑: 我相信该方法是在 lines_!
之前调用的。现在它已被弃用。以防万一您使用的是旧的 Scala 版本。
关于比较不同的文件
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
(给定小文件)?
我认为您需要使用 lineStream_!
方法,而不是 !
。使用作为 diff
命令输出的行流,您可以做任何您想做的事情:打印它、将其转换为列表、数组或您需要的任何其他内容。
val st = "diff input.txt output.txt" lineStream_!
// now st is a Stream[String]
println(st.mkString("\n"))
编辑: 我相信该方法是在 lines_!
之前调用的。现在它已被弃用。以防万一您使用的是旧的 Scala 版本。