如何在scala中以简单的方式读取流?

时间:2017-11-30 11:08:11

标签: scala

要从Java中读取流,我会照常做到:

byte buff[] = new byte[10]
int len = 0;
while ((len = inputStream.read(buff)) != -1){
 ...do something with buff..
}

我知道scala提供Source.fromInputStream之类的东西,但老实说我觉得它有点沉重。我知道上面的内容不会在Scala中工作,因为赋值不会返回值。有没有使用图书馆的简单方法?

1 个答案:

答案 0 :(得分:1)

可以关闭可变状态并像这样使用Iterator.continually

val buff = Array.ofDim[Byte](10)
Iterator.continually(inputStream.read(buff))
  .takeWhile(_ != -1)
  .foreach { len =>
    // do something wit buff and len
  }

或多或少直接翻译Java代码。但是,我会根据手头的任务来找到图书馆。