Завершение частичной загрузки (HttpURLConnection .setRequestProperty ("Range", "bytes =" + length + "-");) - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь загрузить несколько файлов.В моем случае сервер не возвращает длину соединения.Итак, я не могу проверить, что файл погоды загружен полностью.

Я использую следующий код для загрузки оставшейся части файла, если загрузка была завершена.

long length = 0;
    if(file.exists()) length = file.length();
    URL url = null;
    try {
        url = new URL(urlString);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        FileOutputStream out;
        if(length==0)
            out = new FileOutputStream(file.getPath());
        else {
            connection.setRequestProperty("Range", "bytes="+length+"-");
            out = new FileOutputStream(file.getPath(),true);
        }
        connection.connect();
        BufferedInputStream in = new BufferedInputStream(connection.getInputStream());
        byte[] buf = new byte[1024];
        int n = in.read(buf);
        if(n!=-1 && !(new String(buf,"UTF-8")).startsWith("<"))
            do out.write(buf, 0, n); while (-1 != (n = in.read(buf)));
        out.close(); in.close();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

Что происходит, так этополный файл загружается снова и добавляется к тому, что было загружено ранее.

connection.setRequestProperty ("Range", "bytes =" + length + "-");не похоже на работу.

Может кто-нибудь предложить лучший способ завершить загрузку частично загруженных файлов.

...