`

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. }
分享到:
评论

相关推荐

    java http多线程下载器

    Java HTTP多线程下载器是一种优化的网络资源下载工具,它利用Java编程语言实现了HTTP协议的下载功能,并结合多线程技术以提高下载速度。在本文中,我们将深入探讨Java HTTP多线程下载器的工作原理、核心概念以及实现...

    java写的多线程下载程序源码

    Java编写的多线程下载程序源码是一种利用Java语言特性实现高效大文件下载的技术。在这一程序中,主要涉及到了Java的多线程处理和网络编程两大核心知识点。 首先,让我们深入理解Java的多线程。Java提供了丰富的多...

    java多线程之赛马程序实验8多线程练习下载进度

    本实验"java多线程之赛马程序实验8多线程练习下载进度"聚焦于如何利用多线程来模拟实际场景中的下载进度显示。在这一过程中,我们将探讨Thread类的`run`和`start`方法,以及如何通过进度条来可视化表示下载过程。 ...

    java多线程聊天程序

    Java多线程聊天程序是一种利用Java编程语言设计的实时通讯应用,它利用图形用户界面(GUI)提供交互式用户体验,并通过Socket进行网络通信。在这个程序中,多线程技术是核心,因为它允许并发处理,使得用户可以同时...

    Java多线程下载器

    Java多线程下载器是一种利用Java编程语言实现的高效文件下载工具,它通过将大文件分割成多个部分并同时下载,显著提高了下载速度。在Java中实现多线程下载器涉及许多关键概念和技术,包括线程、并发控制、网络I/O...

    java多线程下载器

    Java多线程下载器是一种利用Java编程语言实现的高效文件下载工具,它通过将大文件分割成多个小部分,然后创建多个线程同时下载这些部分,以提高下载速度。这种技术在处理大文件或者网络带宽有限的情况下尤其有用,...

    另外一个java多线程下载程序源代码

    在这个“另外一个java多线程下载程序源代码”中,我们可以深入学习如何利用Java的多线程特性来创建一个高效的文件下载应用。 首先,我们了解Java中创建线程的两种主要方式: 1. 继承`Thread`类:自定义一个新的类...

    java多线程小程序实例

    java多线程小程序实例 java多线程小程序实例

    java多线程简单下载器

    【Java多线程简单下载器】是一个初学者的编程作业,虽然代码可能较为混乱,但其核心功能已经实现,即通过多线程技术进行文件的下载。在Java中,多线程是并发处理的重要手段,它允许多个任务在同一时间执行,从而提高...

    Java多线程测试程序,

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。在本项目中,“Java多线程测试程序”利用了这一特性,结合图形用户界面(GUI)框架JFrame,实现了企鹅在界面上的动态...

    java面板多线程发牌程序

    "java面板多线程发牌程序"这个项目将这两个概念巧妙地融合在一起,为用户提供了一个直观、动态的体验。在这个程序中,Java的Swing库被用来创建窗口面板,而多线程技术则用于实现发牌过程的并发执行,确保程序的响应...

    Java多线程下载

    Java多线程下载技术是Java开发中用于提升大文件下载效率的一种常见方法。在传统的单线程下载过程中,网络请求可能会因为各种原因中断,如网络波动、服务器问题或用户操作等,这会导致需要从头开始下载,浪费时间和...

    java 多线程 socket聊天程序

    Java多线程Socket聊天程序是基于Java编程语言实现的一个网络通信应用,主要涉及了Java的Socket编程和多线程技术。这两个核心概念在Java中占据了非常重要的地位,特别是在开发网络应用和服务端系统时。 首先,Java ...

    Java_多线程与并发编程总结.doc

    Java多线程与并发编程是Java开发中至关重要的一部分,它涉及到如何高效地利用CPU资源,以实现程序的并行执行。在操作系统层面,多任务和多进程是通过分配不同的内存空间来实现的,而线程则共享同一进程的内存,这...

    java实现多线程下载文件

    在Java编程中,多线程下载文件是一种优化大文件下载速度和效率的技术。它通过将一个大文件分割成多个小部分,然后同时启动多个线程分别下载这些部分,从而达到加速下载的效果。以下是对这个主题的详细解释: 1. **...

    (Java)FTP多线程下载源代码

    采用apache commons开发包,实现了FTP多线程下载,并有简单的包括进度条的界面,代码的运行:1 把自己的PC配置成FTP服务器(只需下载Serc-U软件)2 建立用户,用户名:zhangyu,密码:123,设置根目录,并拷贝进一些...

    java多线程小汽车运行程序

    Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在这个名为"java多线程小汽车运行程序"的项目中,我们可以看到一个利用Java实现的多线程应用程序,可能是模拟汽车...

    Java实现多线程下载源代码

    总的来说,这个项目是一个很好的实践示例,它不仅展示了Java多线程编程的基本概念,还结合了图形用户界面的设计,帮助初学者理解和掌握这两个重要的编程技能。通过分析和运行这个源代码,开发者不仅可以学习到多线程...

    Java多线程程序设计

    Java多线程程序设计是Java开发中的重要领域,它允许应用程序同时执行多个任务,从而提高系统资源的利用率和程序的响应速度。在Java中,多线程主要通过两种方式实现:继承Thread类和实现Runnable接口。 一、创建线程...

Global site tag (gtag.js) - Google Analytics