android下载http文件暂停,如何在Android中使用okhttp暂停/继续下载

Alexander..

19

第一种方式

我尝试了很多代码,最后用BufferedSource解决了source = responseBody.source(); source.skip(downloadedSize);

Response request = new Request.Builder().url(url).build();

ResponseBody responseBody = response.body();

BufferedSource source = responseBody.source();

if(isResume)

source.skip(downloadedSize);

File file = new File(filePath);

BufferedInputStream input = new BufferedInputStream(responseBody.byteStream());

OutputStream output;

if (isResume) {

output = new FileOutputStream(file, true);

} else {

output = new FileOutputStream(file, false);

}

long currentDownloadedSize = 0;

long currentTotalByteSize = responseBody.contentLength();

byte[] data = new byte[1024];

int count = 0;

while ((count = input.read(data)) != -1) {

currentDownloadedSize += count;

output.write(data, 0, count);

}

它运作成功.我想我很幸运:)

第二种方式

我为跳过下载的字节添加了标题,它工作正常.

Request.Builder requestBuilder = new Request.Builder();

if (isResume) {

requestBuilder.addHeader("Range", "bytes=" + String.valueOf(downloadedSize) + "-");

}

Response request = requestBuilder.url(url).build();

ResponseBody responseBody = response.body();

BufferedSource source = responseBody.source();

File file = new File(filePath);

BufferedInputStream input = new BufferedInputStream(responseBody.byteStream());

OutputStream output;

if (isResume) {

output = new FileOutputStream(file, true);

} else {

output = new FileOutputStream(file, false);

}

long currentDownloadedSize = 0;

long currentTotalByteSize = responseBody.contentLength();

byte[] data = new byte[1024];

int count = 0;

while ((count = input.read(data)) != -1) {

currentDownloadedSize += count;

output.write(data, 0, count);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值