- 浏览: 959132 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
public class MulThreadDownload {
/**
* @param args
*/
public static void main(String[] args) {
String path = "http://net.itcast.cn/QQWubiSetup.exe";
try {
new MulThreadDownload().download(path, 3);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 从路径中获取文件名称
* @param path 下载路径
* @return
*/
public static String getFilename(String path){
return path.substring(path.lastIndexOf('/')+1);
}
/**
* 下载文件
* @param path 下载路径
* @param threadsize 线程数
*/
public void download(String path, int threadsize) throws Exception{
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5 * 1000);
int filelength = conn.getContentLength();//获取要下载的文件的长度
String filename = getFilename(path);//从路径中获取文件名称
File saveFile = new File(filename);
RandomAccessFile accessFile = new RandomAccessFile(saveFile, "rwd");
accessFile.setLength(filelength);//设置本地文件的长度和下载文件相同
accessFile.close();
//计算每条线程下载的数据长度
int block = filelength%threadsize==0? filelength/threadsize : filelength/threadsize+1;
for(int threadid=0 ; threadid < threadsize ; threadid++){
new DownloadThread(url, saveFile, block, threadid).start();
}
}
private final class DownloadThread extends Thread{
private URL url;
private File saveFile;
private int block;//每条线程下载的数据长度
private int threadid;//线程id
public DownloadThread(URL url, File saveFile, int block, int threadid) {
this.url = url;
this.saveFile = saveFile;
this.block = block;
this.threadid = threadid;
}
@Override
public void run() {
//计算开始位置公式:线程id*每条线程下载的数据长度= ?
//计算结束位置公式:(线程id +1)*每条线程下载的数据长度-1 =?
int startposition = threadid * block;
int endposition = (threadid + 1 ) * block - 1;
try {
RandomAccessFile accessFile = new RandomAccessFile(saveFile, "rwd");
accessFile.seek(startposition);//设置从什么位置开始写入数据
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5 * 1000);
conn.setRequestProperty("Range", "bytes="+ startposition+ "-"+ endposition);
InputStream inStream = conn.getInputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len=inStream.read(buffer)) != -1 ){
accessFile.write(buffer, 0, len);
}
inStream.close();
accessFile.close();
System.out.println("线程id:"+ threadid+ "下载完成");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
发表评论
-
怎样成为一名Android开发者
2012-04-14 21:49 1231导读:从事Android开发给我带来的收入甚至远没有达到iPh ... -
Android基础概念
2012-04-14 15:21 939Android操作系统 Android是一个基于Linux ... -
一个帖子掌握android所有控件、ProgressBar 、Android 动画效果、SQLite、四大组件、Android多媒体 [复制链接]
2012-03-29 20:31 1690文章链接:http://www.apkbus. ... -
分享45个android实例源码,很好很强大.收藏吧!!!
2012-03-29 20:23 1081文章链接:http://blog.sina.com.cn/s/ ... -
android开发文章
2012-03-26 13:03 1060推荐momo雨松的一些列android开发文章,其中涉及很多游 ... -
如何选好Android开发书籍和教程[总结]
2012-03-24 23:18 2310本文汇总整理了时下关 ... -
安卓巴士Android开发神贴整理
2012-03-24 23:17 92610个经典的Android开源应用项目 http://www. ... -
Android核心分析28篇,强烈推荐android初学者,android进阶者看看这个系列教程
2012-03-23 09:40 1044文章链接:http://www.apkbus.com/andr ... -
xx项目交互数据流程
2012-03-13 23:49 1015xx项目交互数据流程 UI触发事件,发送广播到业务逻辑处理 ... -
Handler: 主线程如何通知子线程
2012-03-10 00:50 1170Handler: 主线程如何通知子线程 分类: Android ... -
有关Android线程的学习
2012-03-12 11:33 970有关Android线程的学习 20 ... -
安卓巴士精选Android开发教程
2012-03-09 20:55 1198自从我实习以后的一点感受:写得非常棒,对于应届毕业生,正在念书 ... -
android帖子
2012-03-08 19:37 1085一个demo让你掌握Android的各种Service: ht ... -
详解Android源码的编译
2012-02-27 21:21 1129详解Android源码的编译 ... -
Intent在Android中的几种用法
2012-02-26 18:34 1139如果是从BroadcastReceiver ... -
获取网络图片工具类
2012-02-26 18:33 1216package com.soarsky.util; impo ... -
Android 写出高质量的代码
2012-02-20 09:31 1151导读:相信大家都看过google的源码吧,每次看完我都感叹为什 ... -
你了解Activity多少?
2012-02-20 09:30 920一 Activity的生命周期 ... -
Android高手应该精通哪些内容?
2012-02-16 16:17 897很多Android开发者已经度过了初级、中级,如何成为一个An ... -
70道经典Android题加答案--重要知识点几乎都涉及到了
2012-02-13 14:11 147170道经典Android题加答案--重要知识点几乎都涉及到了 ...
相关推荐
用多线程实现断点上传的功能 DeleteOverThread(); #region 初始化 string backUploadStatus = dr["BACKEND_UPLOAD_STATUS"].ToString(); //是否上传成功或取消 if (backUploadStatus == Status.Upload_...
以上就是使用Java Socket实现多线程断点上传或断点续传的关键知识点。实际开发中,可能还会涉及到其他技术,如FTP、HTTP/HTTPS协议、数据库操作等,但核心思路是利用Socket进行网络通信,通过多线程和断点续传技术...
总的来说,多线程FTP断点上传是一项复杂但高效的文件上传技术,它结合了多线程并行处理的优势和断点续传的容错性,是现代FTP客户端软件不可或缺的功能。在实际开发中,需要对网络协议、多线程编程和错误处理有深入的...
在实现多线程下载和断点续传时,还需要注意以下几点: - **异常处理**:网络中断、文件I/O错误等异常情况需要妥善处理,确保能够恢复下载。 - **线程同步**:在多线程环境下,需要确保线程安全,防止数据竞争和不...
下面将详细探讨如何在Java中实现多线程断点续传。 首先,我们需要理解多线程的概念。在Java中,我们可以使用`Thread`类或`Runnable`接口来创建线程。当一个线程被创建后,它可以与主线程并行运行,每个线程都有自己...
本文将深入探讨在C#环境中实现FTP多线程上传下载、断点续传以及分段下载的技术细节。 首先,让我们理解多线程的概念。在单线程环境下,FTP上传和下载可能受限于网络带宽和处理器的单一执行能力。通过多线程,我们...
同时,"【成品】多线程断点续传工具.jar"可能是一个可执行的Java应用程序,它提供了用户界面或者命令行工具,让用户可以方便地进行断点续传的文件上传。 多线程断点续传进一步提高了文件传输的效率。通过将文件分割...
而"多线程"和"断点"这两个文件名可能是指相关示例代码或文档,可以进一步帮助你理解和实践Java FTP的多线程下载和断点续传。 在实际应用中,还需要考虑其他因素,如错误处理、网络状况的监控、文件完整性检查等。...
标题中的“socket做的支持多线程断点上传or断点续传Java源码”涉及到的是在网络编程中,如何使用Java的Socket API实现一个能够处理断点上传和断点续传功能的服务。这是一个高级的网络编程任务,通常在大型文件传输...
在提供的压缩包文件中,可能包含了一个名为“download”的示例项目,这可能是用于演示上述多线程断点续传功能的源代码。通过分析和运行这个项目,你可以更直观地理解这两种技术的结合应用。 总之,多线程和断点续传...
"多线程断点续传工具类"通常指的是一个Java类,该类设计用于实现文件传输时的多线程功能,并且能够从上次中断的地方继续下载或上传,这在大文件传输中非常有用,因为它可以提高速度并避免因网络问题导致的传输失败。...
标题中的“FTP、HTTP 多线程断点续传下载文件.rar”暗示了这是一个关于网络协议(FTP和HTTP)在实现多线程下载时如何支持断点续传功能的资源包。这个压缩文件可能包含了一个或者多个示例程序、文档或教程,用于解释...
总之,"delphi 多线程断点续传支持超大文件2G以上传输带源码"的项目提供了一个实用的解决方案,为使用Delphi开发的软件添加了高效、可靠的超大文件传输能力。对于需要处理大量大文件传输的开发者来说,这是一个宝贵...
这个压缩包"安卓文件下载上传解压相关-工具类支持多线程断点下载.rar"包含了一个工具类,旨在帮助开发者处理这些操作。下面将详细讨论相关知识点。 1. 多线程下载: 在Android中,为了提高文件下载速度,通常会采用...
Android 多线程可断点续传上传文件至服务器Demo(Android端编辑器:Android Studio,服务器端编辑器:Eclipse,请注意手机默认下载目录必须要有t007.zip,服务器端必须有D:\temp\temp目录)
在Android应用开发中,实现多线程断点续传下载是一项重要的技术,它能提高下载效率,节省用户时间,并提供良好的用户体验。以下是对这个主题的详细解析: **1. 多线程下载** 多线程下载是将一个大文件分成多个小块...
本压缩包中的资源涉及到了一个Android文件下载框架,它支持单线程和多线程的断点续传功能。理解这些概念和技术对于Android开发者来说至关重要。 1. **文件下载** 文件下载通常涉及到网络请求和数据流的处理。在...
该压缩包文件“VC++ FTP、HTTP 多线程断点续传下载文件源码.rar”包含了一套基于VC++实现的源代码,用于通过FTP和HTTP协议进行多线程断点续传下载文件。这一技术在现代软件开发中非常重要,尤其是在处理大文件或网络...
### Java实现FTP多线程断点续传:深入解析与技术要点 在现代软件开发中,数据传输是一项基本且关键的任务,特别是在处理大文件时,断点续传功能显得尤为重要。断点续传允许在网络连接中断后恢复传输,避免了重新...