我写的文件传输代码如下:
val fileContent: Enumerator[Array[Byte]] = Enumerator.fromFile(file)
val size = file.length.toString
file.delete // (1) THE FILE IS TEMPORARY SO SHOULD BE DELETED
SimpleResult(
header = ResponseHeader(200, Map(CONTENT_LENGTH -> size, CONTENT_TYPE -> "application/pdf")),
body = fileContent)
即使文件大小相当大(2.6 MB),此代码也能成功运行,但我很困惑,因为我对 .fromFile() 的理解是 fromCallBack() 的包装,而 SimpleResult 实际上读取了缓冲的文件,但文件是在此之前删除。
我的简单假设是 java.io.File.delete 等到块读取完成后文件被释放,但我从未听说过 Java File 类的过程,或者 .fromFile() 已经将所有行加载到 Enumerator例如,但我认为它违反了 fromCallBack() 规范。
有人知道这个机制吗?