只为极速下载
因素
HTTP下载速度受限于两个因素,这里不讨论服务器限制以及多线程
- 带宽网速
- 文件写入速度
速度提升
由于带宽是固定的,因此,文件读写速度是下载速度的关键。
BufferedRandomAccessFile
普遍的,我们使用RandomAccessFile进行断点下载,对文件读写操作,线程对磁盘的读写非常频繁,导致写入文件非常慢,从而导致下载速度慢。因此,采用具有缓冲的RandomAccessFile,能快速降低磁盘的IO。
以下是测试速度对比,转载自https://blog.csdn.net/hpb21/article/details/51270873
读 | 写 | 耗时(s) |
---|---|---|
RandomAccessFile | RandomAccessFile | 95.848 |
BufferedInputStream + DataInputStream | BufferedOutputStream + DataOutputStream | 2.935 |
BufferedRandomAccessFile | BufferedRandomAccessFile | 0.401 |
块传输
通过对比,FileChannel写文件速度优于普通的复制文件方法
写法
1 | /** |
示例
Downloader,欢迎star!
使用上述两种方式,下载速度明显提高了。