【发布时间】:2016-03-18 02:57:10
【问题描述】:
所以我有一个 HttpURLConnection 连接到某个 URL 上的某个图像。我正在使用 Range 属性下载此图像(在单独的并行连接中下载一个文件)。在我抓住所有零件后,我将它们缝合在一起。除非我尝试用更大的文件做一个 InputStream ,否则一切都很好(这意味着我可以在 200 个并行连接中获得一个文件,但不是 5 个)。
例如:
假设我想下载对象:http://stuorgs.uga.edu/images/spotlight/spotlight_button.png,只需 1 部分。所以我的范围是从字节= 0-max。我的程序创建一个最大大小的字节数组,并将来自 HttpURLConnection 的 InputStream 读入该数组。但是,InputStream 在某个点之后,要么只发送超过 0000,要么提前关闭。
这是我的代码:
try {
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
String bytesToGrab = "bytes=" + startingByte + "-" + endingByte;
urlConnection.setRequestProperty("Range", bytesToGrab);
int sizeOfData = endingByte - startingByte;
byte[] storeData = new byte[sizeOfData];
InputStream inputStream = urlConnection.getInputStream();
inputStream.read(storeData);
inputStream.close();
createFile(storeData); // this takes the byte array and creates a file with it
} catch (IOException e) {
System.out.println("Cannot open url connection: " + e);
}
那么,我的 InputStream 会提前关闭吗?如果是这样,我该如何防止这种情况发生?不然怎么回事?
【问题讨论】:
标签: java networking httpresponse