Я пытаюсь загрузить несколько файлов.В моем случае сервер не возвращает длину соединения.Итак, я не могу проверить, что файл погоды загружен полностью.
Я использую следующий код для загрузки оставшейся части файла, если загрузка была завершена.
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 + "-");не похоже на работу.
Может кто-нибудь предложить лучший способ завершить загрузку частично загруженных файлов.