思路:使用HttpGet添加Header头部,在头部里面设置读取的内容的范围,这样服务器发送的数据就不是从头开始发,客服端使用单线程以追加的方式打开一个文件,每次得到的数据都追加到文件中,这样就实现了文件的断点下载。
服务器代码片段:
//设置下载的数据位置XX字节到XX字节 Header header_size = new BasicHeader("Range", "bytes=" + size + "-" + fileSize); request.addHeader(header_size); response = client.execute(request);
//设置下载的数据位置XX字节到XX字节 Header header_size = new BasicHeader("Range", "bytes=" + size + "-" ); request.addHeader(header_size); response = client.execute(request);
客户端代码片段:
mStream = new FileOutputStream(state.mFilename, true); //小技巧 以追加的方式打开文件输出流,就可以实现断点下载,true为追加,false为不追加直接替换掉源文件的内容