java使用 网络连接+RandomAccessFile + io 多线程实现多线程下载文件并显示实时网速

本文介绍如何使用Java实现多线程下载大文件,结合RandomAccessFile、URL和线程池提高下载速度。通过切割文件、建立网络连接、使用线程池并实现下载速度的实时计算,详细解释了代码中的关键部分,包括设置下载范围、读写文件和线程同步。
摘要由CSDN通过智能技术生成

下载文件的时候,一个大文件切成很多片,用多线程下载,速度会快很多

阅读代码的时候注意查看代码里面的注释

想用多线程下载文件,则,

第一:得了解  RandomAccessFile  类,这是个随机访问文件类,里面可以设置 访问的 开始地址和结束地址,且该类可读可写。

RandomAccessFile out = new RandomAccessFile(file, "rw"); 则表示,该类可读可写。通过 out.seek(start)  可以定位开始读取的位置。

第二:既然是网络文件下载,那就必须得了解 URL 类,该类是 java.net 包提供的一个 可以用来网络连接的类。

URL url = new URL(urlLocation); 可以这样实例化该类,然后打开连接,HttpURLConnection conn = (HttpURLConnection) url.openConnection();,还可以设置些别的参数,比如说设置超时,设置访问方法,设置 访问 起始点之类的。

        conn.setConnectTimeout(5000);
        conn.setRequestMethod("GET");

        conn.setRequestProperty("Range", "bytes=" + start +"-"+end );

第三:了解线程,这里我们使用 java 1.5之后引入的 concurrent 包里面的  Executors.newCachedThreadPool() 线程池

第四:最基本的 io读写得知道

 

看看代码吧。

1.为了方便,我写了个工具类,用于提供 Util类用来提供获取 HttpURLConnection 连接

public class Util {

	// 记录读取了多少,一共读取了多少
	public static long start;
	// 记录文件总大小
	public static long sum;

	/**
	 * 
	 * @Title: g
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值