【发布时间】:2015-07-10 18:39:14
【问题描述】:
我有一个想要写入文件的 Scala 字节流。流中的数据过多,无法缓冲所有内存。
作为第一次尝试,我创建了一个类似于此的InputStream:
class MyInputStream(data: Stream[Byte]) extends InputStream {
private val iterator = data.iterator
override def read(): Int = if (iterator.hasNext) iterator.next else -1
}
然后我使用 Apache Commons 编写文件:
val source = new MyInputStream(dataStream)
val target = new FileOutputStream(file)
try {
IOUtils.copy(source, target)
} finally {
target.close
}
这可行,但我对性能不太满意。我猜想为每个字节调用MyInputStream.read 会带来很多开销。有没有更好的办法?
【问题讨论】: