Android 용 다운로드 파일의 경우 okhttp 라이브러리를 사용합니다. 나는 성공적으로 다운로드한다. 그러나 다운로드를 일시 중지하고 다시 시작할 때 잘못된 것이 있습니다.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가됩니다. 그것은 이력서에 다운로드 한 크기에서 시작하지 않는다, 그것은 bytestream의 시작에서 다운로드를 시작한다. 파일은 13MB가됩니다. 코드에 어떤 문제가 있습니까?
새 요청을 작성하여 보냈습니다. 그러면 응답이 전체 파일을 보유하게됩니다. okHttp에 부분 응답을 다운로드 할 수있는 기능이 있는지 확실하지 않지만 그렇게 할 경우 사용자가 수행하는 방식이 아닙니다. 최소한 다운로드를 시작할 위치에 대한 데이터를 전달해야합니다. –