所以我想知道如何使用 scalaz-stream 来生成使用 java.security.MessageDigest 的文件摘要?
我想使用一个恒定的内存缓冲区大小(例如 4KB)来做到这一点。我想我知道如何开始阅读文件,但我很难理解如何:
1) 调用digest.update(buf)
每 4KB,这实际上是对 Java MessageDigest 实例的副作用,我猜这应该发生在 scalaz-stream 框架内。
2) 最后调用digest.digest()
以从 scalaz-stream 框架内接收计算出的摘要如何?
我想我明白如何开始:
import scalaz.stream._
import java.security.MessageDigest
val f = "/a/b/myfile.bin"
val bufSize = 4096
val digest = MessageDigest.getInstance("SHA-256")
Process.constant(bufSize).toSource
.through(io.fileChunkR(f, bufSize))
但后来我被困住了!请问有什么提示吗?我想它必须也可以将摘要对象的创建,更新,检索(实际摘要计算)和销毁包装在scalaz-stream Sink或其他东西中,然后调用.to()
传递该Sink?抱歉,如果我使用了错误的术语,我对使用 scalaz-stream 完全陌生。我已经通过了一些示例,但仍在苦苦挣扎。