多线程下载类

99 篇文章 0 订阅


import java.io.File;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;


import android.util.Log;






public class DownLoader{


public static void download(String urlPath,String saveFileName,String saveFilePath)throws Throwable{
URL url=new URL(urlPath);
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5*1000);
conn.setRequestMethod("GET");
int filelength=conn.getContentLength();

saveFileName=saveFileName.trim();
File f=new File(saveFilePath);
f.mkdirs();
f = new File(f,saveFileName);
boolean b2;
Log.e("file",f.getAbsolutePath());


// if(f.exists())f.delete();
// boolean b=f.createNewFile();

if(!(b2=f.exists())){
f.createNewFile();


RandomAccessFile file=new RandomAccessFile(f,"rw");
   
file.setLength(filelength);
file.close();
conn.disconnect();
int threadsize=3;
int threadlength=filelength%3==0?filelength/3:filelength/3+1;
for(int i=0;i<threadsize;i++)
{int startposition =i*threadlength;

RandomAccessFile threadfile=new RandomAccessFile(f, "rw");

threadfile.seek(startposition);
new DownLoadThread(i,urlPath,startposition,threadfile,threadlength).start();
}
}


}

}































import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;


import android.util.Log;








public class DownLoadThread extends Thread
{
private int threadid;
private int startposition;
private  RandomAccessFile threadfile;
private int threadlength;
private String path;
public DownLoadThread(int threadid,String path,int startposition,
RandomAccessFile threadfile,int threadlength){
this.threadid=threadid;
this.startposition=startposition;
this.threadfile=threadfile;
this.threadlength=threadlength;
this.path=path;

}
@Override
public  void run(){
{
try{
Log.e("thread","线程"+threadid+"开始下载");
URL url=new URL(path);
 
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setConnectTimeout(5*1000);
conn.setRequestMethod("GET");
conn.setRequestProperty("Range", "bytes="+startposition+"-");
InputStream inStream= conn.getInputStream();
byte[] buffer=new byte[1024];
int len=-1;
int length=0;
while(length<threadlength&&(len=inStream.read(buffer))!=-1)
{
threadfile.write(buffer,0,len);
length+=len;
 
}
threadfile.close();
inStream.close();
Log.e("thread","线程"+threadid+"已经下载完成");
}catch(Exception e){
e.printStackTrace();
}
}
}
 
 
 
 
}








1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FocusOneThread

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值