使用多线程下载:
1:可以记录当前下载当前的位置,实现断点下载。
多线程下载的时候可以记录上次下载的位置,当再次开始的时候可以帮我们记住上次下载的位置,当再次下载的时候可以从记录的位置开始。
2:下载速度变快。
多线程下载快,使其因为其抢占服务器的资源多,在较短的时间内,抢占CPU资源的线程多了,原来一个线程下载现在多个下载,那么速度肯定快了。
实现多线程下载的过程可以分为:
1:获取网络资源、
2:初始化多线程下载信息。
3:开辟硬件空间。
4:将从网络获取的数据放入已经申请的空间。
5:关闭资源。
假设文件有6兆,共有三条线程来完成下载:
首先根据访问的路径URL去调用openConnection ()方法, 得到HttpURLConnection对象,调用其方法得到下载文件的长度,然后设置本地文件的长度(下载前申请与要下载文件长度一样的空间承载资源)。
URL url = new URL (path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5*1000);
conn.setRequestMethod("GET");
int fileLength = conn.getContentLength();
引入RandomAcessFile类:
该类支持将从文件任意字节出读或写数据,而File类只是将文件作为整体来处理文件,
调用RandomAcerrFile 的方法setLength ()方法设置文件的长度,其只是申请文件的长度,但是不存在我们下载文件的数据。
2&