【发布时间】:2016-01-15 03:54:35
【问题描述】:
如果 ssl 被禁用,它将使用 FileRegion 而不是 ChunkedInput。这是为什么?大文件不会破坏代码吗?
谢谢。
【问题讨论】:
-
原来是在禁用 ssl 时调用 FileChannel 的 transferTo() 方法。该方法比从通道或 ByteBuf 的某些包装中读取更有效。
-
你能把它作为答案发布吗,这个问题对于未来看到这个问题的人来说真的很有趣
-
为什么大文件会破坏代码?
-
我错了。起初我认为如果不使用 ChunkedInput,那么消息大小可能大于 Integer.MAX_VALUE。现在我深入研究代码,发现在这种情况下大小将设置为 0,并使用 FileChannel 的 transferTo() 方法。