`

文件多线程下载

 
阅读更多

//线程下载类
package com.cgm.mutithreaddowm;

import java.io.File;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;

public class MutiThreadDowm {

public MutiThreadDowm() throws Exception{
     String path="http://localhost:8080/test/up/11.txt";
URL url=new URL(path);
HttpURLConnection con=(HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setDoInput(true);
con.connect();
int code=con.getResponseCode();
if (code==200) {
int sum=con.getContentLength();

String fileName="d:/test/a.txt";
//创建一个空文件
RandomAccessFile file=new RandomAccessFile(new File(fileName), "rw");
file.setLength(sum);
file.close();

System.out.println(sum);
int threadCount=3;
int threadSize=sum/threadCount+(sum%threadCount==0?0:1);
for (int i = 0; i < threadCount; i++) {
int start=i*threadSize;
int end=start+(threadSize-1);
System.out.println("第"+(i+1)+"个线程要下载的值是"+start+"-"+end);
new MutiThread(url, fileName, start, end).start();  //开三个线程下载
}
}
con.disconnect();
}

public static void main(String[] args) throws Exception {
new MutiThreadDowm();
}

}




//线程类



package com.cgm.mutithreaddowm;

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 MutiThread extends Thread {
private URL  url;
private String fileName;
private int start;
private int end;

/*线程要知道服务文集N的URl
*  写到呢而去
*  从哪儿开始写
*  一共多少字节 数据
*/
public MutiThread(URL url, String fileName, int start, int end) {
//super();
this.url = url;
this.fileName = fileName;
this.start = start;
this.end = end;
}

@Override
public void run() {
HttpURLConnection con;
try {
con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setDoInput(true);
con.setRequestProperty("range", "bytes="+start+"-"+end);
con.connect();
int code=con.getResponseCode();
if (code==206) {
int size=con.getContentLength();
System.out.println(this.getName()+"下载的数据量是"+size);
RandomAccessFile file=new RandomAccessFile(new File(fileName),"rw");
InputStream in=con.getInputStream();
                file.seek(start);
                byte[] bts=new byte[1024];
                int len=0;
                while ((len=in.read(bts))!=-1) {
file.write(bts,0,len);
}
                file.close();
}
con.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}







}

分享到:
评论

相关推荐

    Android文件多线程下载

    在Android开发中,文件下载是一项常见的任务,尤其是对于大型应用或者资源更新,多线程下载技术则显得尤为重要。本文将详细解析如何在Android环境中实现文件的多线程下载,包括自定义线程数、断点续传以及下载任务的...

    Python-HTTP大文件多线程下载工具支持断点续传

    多线程下载的基本思路是将大文件分割成若干小块,每个线程负责下载其中的一块,最后再合并成完整的文件。 断点续传功能是通过保存下载进度来实现的。在下载过程中,工具会记录已下载的部分,当下载中断时,保存的...

    android文件多线程下载demo

    在Android开发中,多线程下载文件是一种常见的需求,尤其对于大文件,它可以显著提高下载速度,提升用户体验。本示例“android文件多线程下载demo”旨在展示如何实现这一功能,同时也涉及到SQLite数据库的简单应用,...

    多线程分别下载文件

    此外,文件存储也是多线程下载的一个关键部分。Android提供了File、FileOutputStream等类来处理本地文件操作。通常,下载的文件会被保存到外部存储(SD卡)或者内部存储的特定目录下,确保数据的持久化。 为了协调...

    SpringBoot版本的多线程下载文件,分段下载文件

    本篇将深入探讨如何利用SpringBoot实现多线程下载文件以及分段下载文件的技术。 首先,多线程下载文件是一种提高下载速度的方法,通过将大文件分成多个小部分,每个部分由一个单独的线程负责下载,从而充分利用多核...

    qt多线程高效下载文件

    在多线程下载中,每个文件的下载任务可以放在一个单独的QThread中执行,这样可以避免因为单个下载任务阻塞主线程而影响用户界面的响应速度。 2. **QNetworkAccessManager**:这是Qt提供的网络访问管理器,可以发起...

    VB.NET可以很容易实现多文件多线程同时下载

    根据描述中的内容,使用VB6实现多文件同时下载时遇到了困难,主要表现在无法实现真正意义上的多线程下载。 #### VB.NET的优势 相比于VB6,VB.NET提供了更为强大的多线程支持和面向对象编程特性,使得开发人员能够更...

    Aandroid 多线程断点续传同时下载多个大文件

    在Android开发中,多线程、断点续传和同时下载多个大文件是优化用户体验和提高应用程序性能的关键技术。下面将详细阐述这些知识点,并提供如何实现的指导。 **多线程** 多线程是Android应用中处理耗时操作的重要...

    多文件多线程下载器 多文件多线程下载器

    可以在网页上下载同一文件的分割的多部份

    java 多线程下载 (单文件)

    Java多线程下载技术主要应用于提高大文件下载的效率,通过将文件分割成多个部分,同时启动多个线程分别下载这些部分,从而实现并行下载,加快下载速度。以下是对这个主题的详细解释: 1. **Java多线程基础**: 在...

    Python文件多线程下载工具.zip

    Python文件多线程下载工具是一种高效且灵活的解决方案,尤其适用于处理大文件的下载任务。在互联网上,尤其是在处理大量数据或大型文件时,多线程技术能够显著提高下载速度,因为它可以同时从服务器获取多个数据块,...

    java多线程下载源代码

    Java多线程下载是利用Java编程语言实现的一种高效下载大文件的技术。在传统的单线程下载方式中,如果网络环境不稳定或文件较大,下载过程可能会很慢,甚至中断。而多线程下载则是将文件分割成多个部分,每个部分由一...

    C#实现多线程下载文件

    本文将深入探讨如何在C#中实现多线程下载文件,涉及的知识点包括线程池、异步编程、进度更新以及错误处理。 首先,我们需要了解线程的基本概念。在C#中,线程是程序执行的独立路径,每个线程都有自己的调用堆栈,...

    C# Winform 多线程下载

    在C# Winform应用中实现多线程下载是一项常见的任务,尤其在处理大文件或需要提高下载速度的情况下。本文将详细讲解如何利用C#的多线程技术来创建一个Winform应用程序,实现高效的文件下载功能。 首先,我们需要...

    Java实现文件的多线程下载

    在本案例中,我们将探讨如何使用Java实现文件的多线程下载,这对于处理大文件或者在网络带宽有限的情况下尤其有用。通过多线程下载,可以将文件分割成多个部分并同时下载,从而缩短整体下载时间。 首先,我们需要...

    htp多线程断点下载文件

    在IT领域,网络数据传输是不可或缺的一部分,而断点续传和多线程下载技术则大大提升了文件下载的效率和用户体验。"htp多线程断点下载文件"这一主题,涉及了网络编程、多线程技术和文件处理等多个知识点。 首先,...

    多线程从远程服务器上下载文件

    此外,还有一些库和框架,如Java的Apache HttpClient或Python的requests库,它们已经封装了网络通信的部分,简化了多线程下载和上传的实现。 总的来说,多线程从远程服务器上下载文件是一项提升性能的技术,它充分...

    C#多线程大文件下载

    在C#编程中,多线程大文件下载是一种常见的优化技术,它允许程序同时从服务器获取数据,提高文件下载速度,特别是在处理大文件时效果...通过上述知识点的组合,可以构建出一个高效、用户友好的大文件多线程下载工具。

    C# httpwebrequest 多线程下载类

    在多线程下载场景中,我们通常会为每个下载任务创建一个独立的线程,以便并发执行多个请求,提高下载效率。 下面,我们将逐步解析实现`C# httpwebrequest 多线程下载类`的关键步骤: 1. **创建下载类**:首先,...

    易语言多线程下载不卡速度快

    在本项目中,“易语言多线程下载不卡速度快”是一个利用易语言实现的多线程下载工具,旨在提供高效、稳定的文件下载体验。通过多线程技术,该工具能够同时处理多个下载链接,使得下载过程更加流畅,减少因单一线程...

Global site tag (gtag.js) - Google Analytics