0

我试图寻找一些有助于恢复下载的方法,我找到了以下代码。我不明白这条线是什么意思...

if(ISSUE_DOWNLOAD_STATUS.intValue()==ECMConstant.ECM_DOWNLOADING) 

这里的 ECMConstant 是什么?

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
if(ISSUE_DOWNLOAD_STATUS.intValue()==ECMConstant.ECM_DOWNLOADING){
    File file=new File(DESTINATION_PATH);
    if(file.exists()){
         downloaded = (int) file.length();
         connection.setRequestProperty("Range", "bytes="+(file.length())+"-");
    }
}else{
    connection.setRequestProperty("Range", "bytes=" + downloaded + "-");
}
connection.setDoInput(true);
connection.setDoOutput(true);
progressBar.setMax(connection.getContentLength());
 in = new BufferedInputStream(connection.getInputStream());
 fos=(downloaded==0)? new FileOutputStream(DESTINATION_PATH): new FileOutputStream(DESTINATION_PATH,true);
 bout = new BufferedOutputStream(fos, 1024);
byte[] data = new byte[1024];
int x = 0;
while ((x = in.read(data, 0, 1024)) >= 0) {
    bout.write(data, 0, x);
     downloaded += x;
     progressBar.setProgress(downloaded);
}

谢谢。

4

1 回答 1

0

ECMConstant 可以是任何东西......如果您没有 ECMConstant 来自的完整代码或库,则无法知道是什么。

如果您怀疑如何恢复下载,您需要做的就是处理您的 Header、请求属性或您的服务器需要恢复它的东西,如下所示:

Map<String, String> headers = new HashMap<String, String>();

            if (isResuming) {

                File fileToResume = new File(filePath);

                if (fileToResume.exists()) {

                    headers.put("Range", "bytes=" + fileToResume.length() + "-");
                }
            }

其中 isResuming 是您是否恢复下载的标志。

于 2013-06-20T14:04:16.403 回答