Try using a “Range” request header:
// Open connection to URL.
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// Specify what portion of file to download.
connection.setRequestProperty("Range", "bytes=" + downloaded + "-");
// here "downloaded" is the data length already previously downloaded.
// Connect to server.
connection.connect();
Having done that, you can seek
at a given point (just before the length of your download data, say X
) and start writing the newly downloaded data there. Be sure to use the same value X
for the range header.
Details about 14.35.2 Range Retrieval Requests
More details and source code can be found here