Androidでファイルをダウンロードするには、okhttpライブラリを使用します。ダウンロードに成功しました。しかし、ダウンロードを一時停止して再開すると、何か問題が発生します。
Response request = new Request.Builder().url(url).build();
ResponseBody responseBody = response.body();
File file = new File(filePath);
BufferedInputStream input = new BufferedInputStream(responseBody.byteStream());
OutputStream output;
if (isResume) {
output = new FileOutputStream(file, true);
input.skip(downloadedSize);
} else {
output = new FileOutputStream(file, false);
}
long totalByteSize = responseBody.contentLength();
byte[] data = new byte[1024];
int count = 0;
while ((count = input.read(data)) != -1) {
downloadedSize += count;
output.write(data, 0, count);
}
問題は、たとえばファイルのサイズが 10MB であることです。3MBのダウンロードで一時停止し、ダウンロードを再開し、ダウンロードが完了するとファイルのサイズが13MBになります。再開時にダウンロードしたサイズから開始するのではなく、バイトストリームの先頭からダウンロードを開始します。ファイルは13MBになります。コードの何が問題になっていますか?