多线程断点文件拷贝
来源:互联网 发布:中文相似度匹配算法 编辑:程序博客网 时间:2024/05/29 14:22
package threadFileCopy;import java.io.File;import java.io.IOException;import java.net.HttpURLConnection;import java.net.URL;public class Test {public static void main(String[] args) throws IOException {String s = "http://img5.duitang.com/uploads/item/201512/15/20151215223141_icL2m.jpeg";URL url = new URL(s);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setReadTimeout(500);long len = conn.getContentLength();System.out.println("响应数据的字节数:" + len);int code = conn.getResponseCode();if (code == HttpURLConnection.HTTP_OK) {File dir = new File("C:\\Users\\rhs\\Desktop", s.substring(s.lastIndexOf("/")));long l = len / 4;int count = 4;for (int i = 0; i < count; i++) {FileCopy fc = null;if (i == count - 1) {fc = new FileCopy(url, dir, i * l, len);} else {fc = new FileCopy(url, dir, i * l, (i + 1) * l - 1);}fc.start();}Schedule sd = new Schedule(len, dir);sd.setDaemon(true);sd.start();}}}package threadFileCopy;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;import java.net.HttpURLConnection;import java.net.URL;public class FileCopy extends Thread {private URL url;private File dir;private long start;private long end;private File file = new File(this.getName() + ".txt");public FileCopy(URL url, File dir, long start, long end) {super();this.url = url;this.dir = dir;this.start = start;this.end = end;}@Overridepublic void run() {RandomAccessFile write = null;RandomAccessFile write1 = null;RandomAccessFile read = null;InputStream is = null;try {if (!file.exists()) {write1 = new RandomAccessFile(file, "rw");write1.writeLong(start);}HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setReadTimeout(500);write = new RandomAccessFile(dir, "rw");is = conn.getInputStream();write1 = new RandomAccessFile(file, "rw");read = new RandomAccessFile(file, "r");start = read.readLong();System.out.println(start);is.skip(start);write.seek(start);;byte[] b = new byte[1024];int len = 0;while (((len = is.read(b)) != -1) && start < end) {write.write(b, 0, len);start += len;write1.seek(0);write1.writeLong(start);}} catch (Exception e) {e.printStackTrace();} finally {try {write.close();is.close();sleep(100);} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}}}package threadFileCopy;import java.io.File;import java.text.DecimalFormat;public class Schedule extends Thread {private long len;private File dir;public Schedule(long len, File dir) {super();this.len = len;this.dir = dir;}@Overridepublic void run() {DecimalFormat df = new DecimalFormat("##.##%");long length = len;long nowlength = 0;while (nowlength < length) {nowlength = dir.length();System.out.println(df.format(nowlength * 1.0 / length));try {sleep(500); } catch (InterruptedException e) {e.printStackTrace();}}}}
阅读全文
0 0
- 多线程断点文件拷贝
- VB断点拷贝大文件
- 多线程断点下载文件
- 多线程断点下载文件
- 多线程断点下载文件
- 多线程断点下载文件
- 多线程断点下载文件
- 多线程拷贝文件
- 多线程拷贝文件
- 多线程拷贝文件
- 多线程实现文件拷贝
- linux 多线程拷贝文件
- 利用多线程拷贝文件
- 6.多线程文件拷贝
- 多线程拷贝文件
- 多线程文件拷贝
- 多线程实现文件拷贝
- Java 多线程断点下载文件
- 讯飞语音
- CentOS下搭建Redis集群
- 【POJ】3070
- 2014广州亚洲现场赛/hdu 5128 The E-pang Palace(计算几何:暴力枚举)
- Mysql如何为表字段添加索引???
- 多线程断点文件拷贝
- 学习ReactNative
- Gym
- Oracle 使用sys用户登录报insufficient privileges权限不足
- h5移动前段的udp通信及数据包相应格式的编码转换
- uva-10815-Andy's First Dictionary-stl-set
- 2014广州亚洲现场赛/HDU 5131 Song Jiang's rank list(水题)
- [bzoj1426]收集邮票 期望DP
- Makefile经典教程(掌握这些足够)