Java 支持从 Url 下载数据超过 `Int.MAX_VALUE` (Url.openConnection())

Java Support Download Data from Url more then `Int.MAX_VALUE` (Url.openConnection())

当我想下载超过 Int.MAX_VALUE 内容大小时,我很困惑。

UrlConnection.contentLength 它 return Int 所以如果它更大。它可能 return -1

//i'm reading 1024 * 4 at a time
Long offset = 0 //download data
Long size = UrlConnection.contentLengthLong

如果我使用 UrlConnection.contentLengthLong 那么问题就出现了,当我阅读 UrlConnection.getInputStream.read(byte[] dest, Int offset, Int length) 并且我的 Long offset 到达 Int.MAX_VALUE 时我无法转换 Long offsetInt。有可能 Int Overflow.

那么从流中读取超过 Int.MAX_VALUE 的替代方法是什么,因为 .read(byte[] dest, Int offset, Int length) 函数不支持 Long 值。

Java中数组的最大大小不能超过整数范围。要从流中读取更多数据,您必须逐个读取。这样做时,您将永远不必使用长参数作为偏移量或长度。