Scala iteratee写入文件
发布时间:2020-12-16 19:24:54 所属栏目:安全 来源:网络整理
导读:我有一个方法保存,它需要一个Iteratee并保存一些数据.在方法内部,数据以 enumerator个字节数组块的形式提供. def save[E](consumer: Iteratee[Array[Byte],E]): Future[E] = { val producer: Enumerator[Array[Byte]] = // ... Iteratee.flatten(producer(co
我有一个方法保存,它需要一个Iteratee并保存一些数据.在方法内部,数据以
enumerator个字节数组块的形式提供.
def save[E](consumer: Iteratee[Array[Byte],E]): Future[E] = { val producer: Enumerator[Array[Byte]] = // ... Iteratee.flatten(producer(consumer)).run } 通缉:调用save以使其将数据写入FileOutputStream. 我尝试了以下但不确定这是否可行: def writeToStream(s: OutputStream) = Iteratee.foreach((e: Array[Byte]) => s.write(e)). mapDone(r => { s.close(); r }) save(writeToStream(new FileOutputStream(myFile))) 问题:这是应该做的吗?我担心这不会总是关闭流(例外情况). 我正在使用Play Framework 2.1中的Play Framework Iteratee库(使用Scala期货). 解决方法
Iteratee的scaladocs说,“生产者”而不是迭代者负责处理资源:
您可能成功使用Enumerator中的“onDoneEnumerating”方法来清理资源. Scaladoc Iteratee (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |