scala - 有没有一种简单的方法可以将 Iterator[Byte] 懒惰地转换为输入流?
问题描述
给定一个 Iterator[Byte] 我可以在不将整个 Iterator 物化到内存中的情况下生成一个 InputStream 吗?
解决方案
如果您使用的是 Scala,则有一个单行解决方案:
scala> import java.io.InputStream
scala> val itr = Iterator.range(0, 10).map(_.toByte)
val itr: Iterator[Byte] = <iterator>
scala> val ins: InputStream = () => if(itr.hasNext) itr.next & 255 else -1 // Here it is, or
// val ins: InputStream = () => itr.nextOption.fold(-1)(_ & 255)
val ins: java.io.InputStream = anon$1@5dc218e2
scala> ins.readAllBytes()
val res0: Array[Byte] = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
推荐阅读
- c# - 迁移到 ASP Core 3.1 后,控制台中的 Razor MVC 无法正常工作
- git-checkout - Git 从 master 分支拉到另一个分支
- loopbackjs - LOOPBACK 4:将环回 Cli 升级到最新版本,当 URL 被过滤器和偏移量命中时,会收到 BAD REQUEST
- session - 使用条带时管理 Flask 会话
- scala - 异步行为测试 akka
- nanoframework - NanoFramework 上的套接字连接
- sql-server - 禁用 SA,创建新登录,将数据库角色成员更改为数据库所有者
- hl7-fhir - _include 在 hapi fhir 中
- sql - 如何在 SQL 中将 NOT IN 语句转换为 NOT EXISTS 语句?
- html - 无法在带有媒体查询的按钮上进行样式设置