如果一个文件对我来说是一个字节数组,哪种方法可以让用户下载文件更好?
答:使用Apache IOUtils将字节数组直接写入响应流。在这种情况下,如果客户端停止下载和/或断开连接会发生什么?我想将JVM的内存利用率保持在最低限度。
B:将字节数组写入某个临时位置的文件中。然后获取FileInputSteam并将其写入响应。在这种情况下,我需要编写代码来管理磁盘上保存的文件,并确保定期清理。清理算法需要确保它不会尝试删除当前正在向客户端提供的文件。
答案 0 :(得分:1)
这是一个典型的案例,我认为没有一个尺寸适合所有人:
正如你所说,无论如何你都有字节数组中的文件,我不希望它完全服务于那个字节数组是禁止的。但是,您需要了解字节数组的编码(假设它是文本内容,您需要发送带响应的编码标头)
如果不衡量你的情况,几乎没有任何合理的建议你应该做什么。
编辑,回复您的评论:每当处理请求时 - 例如当文件完全传输或抛出“破管”异常时,我会假设您的内存将被释放,除非您明确地将其保存在webapp会话或任何其他可以存活更长时间的数据结构中。但你可能不会明确地这样做,对吧?
您的下载的大小和性质似乎对I / O或内存的要求不高。我的建议:别担心。但是,你应该做的是:测量。检查内存消耗是否确实存在问题。我怀疑它是。如果没有破坏:不要修理它。
你还有字节数组 - 你也可以用它来将它流式传输到客户端,然后才忘记它。看起来这看起来不会太长。