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();
}
}
}
}