scala - 将进程标准输出传递给外部函数
问题描述
我正在尝试实现一个函数,该函数启动一个进程并将其标准输出返回为InputStream
.
def getStuff(): InputStream = ???
在 Java 中似乎很容易做到,但我不知道如何sys.process
在 Scala 中使用它。
解决方案
您可以将命令的输出通过管道传输到OutputSteam
with #>
。然后你只需要复制OutputStream
到InputStream
:
import scala.sys.process._
import java.io._
import scala.io.Source
def getStuff(): InputStream = {
val os = new ByteArrayOutputStream
("echo 'Hello'" #> os).!
new ByteArrayInputStream(os.toByteArray());
}
Source.fromInputStream(getStuff()).mkString //"Hello"
推荐阅读
- mysql - 谁能告诉我如何在节点中使用 sinch-rtc
- r - 在 GAM mgcv 中运行 beta 分发时出错
- google-search-console - 谷歌搜索控制台没有正确索引网站
- python - 将 Featuretools 输出应用到另一个数据框
- kentico - 如何在 Kentico 13 中添加预生成的 HTML 页面
- angular - 在移动/桌面布局之间更改组件的显示顺序
- html - 给握把中的特定行一个特殊的高度
- sql - SQL Server 中 FOR 附近的语法不正确
- sql - 选择每组中的最后一个值
- java - Square 不是抽象的,并且不会覆盖 Shape 类中的抽象方法 area() Square extends Shape{