1、DownLoad
public class DownLoad {
private Executor thredPool = Executors.newFixedThreadPool(3);
public static int finishedThread=0;
static class DownLoadRunnable implements Runnable{
private String url;
private String fileName;
private long start,end;
private TextView mTextView;
private Handler mHandler;
public DownLoadRunnable(String url, String fileName, long start,
long end,Handler mHandler,TextView mTextView) {
super();
this.url = url;
this.fileName = fileName;
this.start = start;
this.end = end;
this.mTextView = mTextView;
this.mHandler = mHandler;
}
@Override
public void run() {
try {
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
conn.setRequestProperty("Range", "bytes="+start+"-"+end);
RandomAccessFile raf = new RandomAccessFile(new File(fileName), "rwd");
raf.seek(start);
InputStream is = conn.getInputStream();
byte[] buffer = new byte[1024];
int len=0;
while((len=is.read(buffer))!=-1){
raf.write(buffer,0,len);
}
if(raf!=null){
raf.close();
}
if(is!=null){
is.close();
}
finishedThread++;
if(finishedThread==3){
mHandler.post(new Runnable() {
@Override
public void run() {
mTextView.setText("下载完成!");
}
});
}
} catch (ProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void downFile(String path,Handler mHandler,TextView mTextView) throws Exception{
HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
int count = conn.getContentLength();
int block = count/3;
String fileName = Environment.getExternalStorageDirectory().getAbsolutePath()+"/1.rar";
for(int i=0;i<3;i++){
long start = i*block;
long end = start+block-1;
if(i==2){
end = count;
}
DownLoadRunnable mRunnable = new DownLoadRunnable(path, fileName, start, end,mHandler,mTextView);
thredPool.execute(mRunnable);
}
}
}
2、MainActivity
public class MainActivity extends Activity {
private TextView mTextView;
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.textView);
mHandler = new Handler();
new Thread(){
public void run() {
DownLoad load = new DownLoad();
try {
load.downFile("http://file02.daimg.com/2012/photo/1206/DAimG_2012062679170543R693.rar",mHandler,mTextView);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}
點(diǎn)擊查看更多內(nèi)容
6人點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得
100積分直接送
付費(fèi)專(zhuān)欄免費(fèi)學(xué)
大額優(yōu)惠券免費(fèi)領(lǐng)