`

JAVA的HTTP多线程下载程序

阅读更多

JAVA的HTTP多线程下载程序。自己教学中使用的一段程序。

java 代码

 

  1. public class DownloadNetTest {
  2. private File fileOut;
  3. private URL url;
  4. private long fileLength=0;
  5. //初始化线程数
  6. private int ThreadNum=5;
  7. public DownloadNetTest(){
  8. try{
  9. System.out.println("正在链接URL");
  10. url=new URL("http://211.64.201.201/uploadfile/nyz.mp3");
  11. HttpURLConnection urlcon=(HttpURLConnection)url.openConnection();
  12. fileLength=urlcon.getContentLength();
  13. if(urlcon.getResponseCode()>=400){
  14. System.out.println("服务器响应错误");
  15. System.exit(-1);
  16. }
  17. if(fileLength<=0)
  18. System.out.println("无法获知文件大小");
  19. //打印信息
  20. printMIME(urlcon);
  21. System.out.println("文件大小为"+fileLength/1024+"K");
  22. //获取文件名
  23. String trueurl=urlcon.getURL().toString();
  24. String filename=trueurl.substring(trueurl.lastIndexOf('/')+1);
  25. fileOut=new File("D://",filename);
  26. }
  27. catch(MalformedURLException e){
  28. System.err.println(e);
  29. }
  30. catch(IOException e){
  31. System.err.println(e);
  32. }
  33. init();
  34. }
  35. private void init(){
  36. DownloadNetThread [] down=new DownloadNetThread[ThreadNum];
  37. try {
  38. for(int i=0;i<ThreadNum;i++){
  39. RandomAccessFile randOut=new RandomAccessFile(fileOut,"rw");
  40. randOut.setLength(fileLength);
  41. long block=fileLength/ThreadNum+1;
  42. randOut.seek(block*i);
  43. down[i]=new DownloadNetThread(url,randOut,block,i+1);
  44. down[i].setPriority(7);
  45. down[i].start();
  46. }
  47. //循环判断是否下载完毕
  48. boolean flag=true;
  49. while (flag) {
  50. Thread.sleep(500);
  51. flag = false;
  52. for (int i = 0; i < ThreadNum; i++)
  53. if (!down[i].isFinished()) {
  54. flag = true;
  55. break;
  56. }
  57. }// end while
  58. System.out.println("文件下载完毕,保存在"+fileOut.getPath() );
  59. } catch (FileNotFoundException e) {
  60. System.err.println(e);
  61. e.printStackTrace();
  62. }
  63. catch(IOException e){
  64. System.err.println(e);
  65. e.printStackTrace();
  66. }
  67. catch (InterruptedException e) {
  68. System.err.println(e);
  69. }
  70. }
  71. private void printMIME(HttpURLConnection http){
  72. for(int i=0;;i++){
  73. String mine=http.getHeaderField(i);
  74. if(mine==null)
  75. return;
  76. System.out.println(http.getHeaderFieldKey(i)+":"+mine);
  77. }
  78. }
  79. public static void main(String[] args) {
  80. DownloadNetTest app=new DownloadNetTest();
  81. }
  82. }
分享到:
评论

相关推荐

    需要系数法负荷计算软件.zip

    需要系数法负荷计算软件

    kettle插件-MongoDB Delete2.0

    kettle 用于(按条件)删除MongoDB集合数据的插件。 只需要放入kettle 客户端安装目录的 plugins目录下,然后重启kettle客户端即可。

    建筑电气负荷计算小软件.zip

    建筑电气负荷计算小软件

    电线选型、线管选型小型计算软件.zip

    电线选型、线管选型小型计算软件

    有限网卡驱动包,直接上传下载就行

    啦啦啦啦

    Theano-0.8.0.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    临床信息.csv

    临床信息.csv

    Windows 命令行五子棋程序,用于向 STM32 移植Gobang.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    现金收支月报表Excel图表.xlsx

    现金收支月报表Excel图表.xlsx

    接地电阻计算软件.zip

    接地电阻计算软件

    多人联机五子棋小游戏muti-Gomoku-master.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    spring aop实现接口参数变更前后对比和日志记录

    spring aop实现接口参数变更前后对比和日志记录完整代码,拿到项目代码,只需要做数据库连接的修改即可运行起来使用,代码案例详细,真是可靠,代码原文地址:https://blog.csdn.net/zhangcongyi420/article/details/138748857?spm=1001.2014.3001.5501

    setuptools-58.5.1.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    控制台界面字符版五子棋,有AI,可人机对战,在dev-c++下编写Renju-AI.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    母亲节祝福html源码.zip

    母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福html源码母亲节祝福

    二叉树遍历算法的应用hahhhahaha

    二叉树遍历算法的应用hahhhahaha

    变压器DGA溶解气体数据(357组)

    包含六种故障类型: 中低温过热 高温过热 低能放电 高能放电 局部放电 正常 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111需要直接下载就可

    桌面滚动字幕软件(2.0)一款可以实现无限循环自定义循环内容的电脑屏幕桌面走字的软件.rar

    桌面滚动字幕软件(2.0)是一款功能强大的电脑屏幕桌面走字工具。它能够实现无限循环自定义循环内容,让用户可以将想要展示的文字内容在电脑屏幕上滚动显示。无论是在办公、学习、展示、宣传等场景,都能发挥重要作用。 这款软件具有以下特点和优势: 1. 自定义内容:用户可以自由编辑、添加、删除和修改滚动字幕的内容,满足个性化需求。 2. 无限循环:字幕内容可以无限循环播放,确保重要信息持续传达。 3. 多种字体、颜色和大小:支持多种字体、颜色和大小的选择,让滚动字幕更具吸引力。 4. 灵活的滚动速度:用户可以根据需求调整滚动速度,实现流畅的滚动效果。 5. 定时功能:可设置滚动字幕的自动隐藏和显示时间,提高屏幕的使用效率。 6. 简洁易用:界面简单直观,操作方便,无需专业知识即可快速上手。 7. 兼容性强:适用于各种Windows操作系统,如Windows 7、Windows 8、Windows 10等。 8. 占用资源低:软件运行过程中,占用极低的系统资源,不影响电脑的正常使用。

    【财务管理】毕马威的财务分析内部培训资料(21P).ppt

    【财务管理】毕马威的财务分析内部培训资料(21P).ppt

    setuptools-69.3.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics