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();
}
}
打开App,阅读手记