当我要下载超过Int.MAX_VALUE
个内容大小时,我感到很困惑。
UrlConnection.contentLength
会返回Int
,因此它会更大。它可能会返回-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
时,我将无法转换{{1} }至Long offset
。可能Int
。
那么从流中读取多于Int Overflow
的替代方法是什么,因为Int.MAX_VALUE
函数中不支持Long
的值。
答案 0 :(得分:1)
Java中数组的最大大小不能超过整数范围。要从流中读取更多数据,您必须一步一步地进行操作。这样做时,您将永远不必使用长参数作为偏移量或长度。