我的任务是通过finatra直接从磁盘向客户端发送文件而不加载到内存中(这些是非常大的文件)。以下是我的问题:
0)如何在不将信息加载到内存的情况下与磁盘i / o进行交互?
1)将文件输入流连接到http输出流时,是否实际将内存加载到ram中?
2)我认为必须将所有内容加载到内存中才能使用,传输和发送。如何将内容直接发送到没有加载到内存的网络端口?
3)内存流是否会从磁盘,到cpu寄存器,到网络适配器缓冲区以便发送?如何在不加载ram的情况下确保这是流量?
4)是否可以在Finatra中执行此操作
答案 0 :(得分:1)
遗憾的是,Finatra 1.6无法实现。流式传输似乎是2.0的路线图,但它的发布没有官方消息。现在,Request => Response
依赖于记忆的输入和输出。处理Finatra中的实体的最有效方法是将它们保存在ChannelBuffers
中,以便至少只有一个字节实例被实现。