文章出自: http://www.360doc.com/content/12/1218/17/2718300_254818081.shtml

本人用这种方法解决了工作中遇到的问题,再次谢谢文章的作者.

序言

许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。

在Internet上很多的资源分成多个文件存放时,它的文件命名是有一定的规则的;正因如此,我们就可以用程序来完成这个资源的完全下载。

1. 基础知识

在Internet上,我们要下载网站上的某个资源,我们会获得一个URL(Uniform Resource Locator),它是一个服务器资源定位的描述,下载的过程总是如下步骤:

步骤1:客户端发起连接请求一个URL

步骤2:服务器解析URL,并将指定的资源返回一个输入流给客户

步骤3:客户端接收输入流,将流中的内容存到文件

2. 网络连接的建立

Java提供了对URL访问和大量的流操作的的API,我们可以很容易的完成对网络上资源的存取,下面的代码段就完成了对一个网站的资源进行访问:

Java代码
  1. ......
  2. destUrl="http://www.ebook.com/java/网络编程001.zip";
  3. url = new URL(destUrl);
  4. httpUrl = (HttpURLConnection) url.openConnection();
  5. //连接指定的网络资源
  6. httpUrl.connect();
  7. //获取网络输入流
  8. bis = new BufferedInputStream(httpUrl.getInputStream());
  9. ......

......
destUrl="http://www.ebook.com/java/网络编程001.zip";
url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
//连接指定的网络资源
httpUrl.connect();
//获取网络输入流
bis = new BufferedInputStream(httpUrl.getInputStream());
......

3. 代理的访问

  Java 中通过代理服务器访问外网的方法已经是世人皆知的秘密了。这里就不再多描述了,访问的JAVA代码如下:

Java代码
  1. //设置代理服务器
  2. System.getProperties().put("proxySet", "true");
  3. System.getProperties().put("proxyHost", "10.154.134.110");
  4. System.getProperties().put("proxyPort", "8080");

//设置代理服务器
System.getProperties().put("proxySet", "true");
System.getProperties().put("proxyHost", "10.154.134.110");
System.getProperties().put("proxyPort", "8080");

4. 网络资源的保存

  在上节中,我们已经获取了指定网络资源的输入流,接下来我们要完成的就是读取输入流中的所以内容,并将其保存在文件中。示例代码:

Java代码
  1. ......
  2. fos = new FileOutputStream(fileName);
  3. if (this.DEBUG)
  4. System.out.println("正在获取链接[" + destUrl + "]的内容...\n将其保存为文件[" + fileName +"]");
  5. //保存文件
  6. while ( (size = bis.read(buf)) != -1)
  7. fos.write(buf, 0, size);
  8. ......

转载于:https://blog.51cto.com/ajiao13/1138475

Java实现HTTP文件下载(转)相关推荐

  1. java实现远程文件下载

    转自JAVA 实现远程文件下载 相信很多同学在实际的项目开发中都会遇到一个问题,如何跨服务下载文件?在传统SSH, SSH2, SSM架构中可能很少遇到这样的问题,但是在当前逐渐流行的微服务架构中,这 ...

  2. Java 之 Excel文件下载

    Java 之 Excel文件下载 可以直接当作工具类使用 Controller业务层使用 做为Utils工具类使用 实例截图 图片三联 可以直接当作工具类使用 老规矩,废话不多说直接上代码: Cont ...

  3. java 下载加速_一种基于Java的大文件下载加速方法与流程

    本发明涉及java/多线程技术领域,涉及一种加速文件下载装置,具体提供一种基于java的大文件下载加速方法. 背景技术: 现有的常用下载方式是基于浏览器的单线程下载.这种单线程下载的方式,是通过htt ...

  4. Java HttpServletResponse 多文件下载

    测试 Java HttpServletResponse 多文件下载(ZIP压缩) 1 项目结构 2 Tomcat 配置 3 测试代码 3.1 FileDownloadServlet 3.2 FileU ...

  5. Java实现网络文件下载demo

    Java实现网络文件下载demo import java.io.*; import java.net.HttpURLConnection; import java.net.URL;/*** @auth ...

  6. java实现高效文件下载

    java实现高效文件下载 本文我们介绍几种方法下载文件.从基本JAVA IO 到 NIO包,也介绍第三方库的一些方法,如Async Http Client 和 Apache Commons IO. 最 ...

  7. Java多格式文件下载及解压处理

    工作中遇到很多多格式文件下载压缩及解压处理,现将通用文件下载工具类做一个总结.包含格式(doc/docx.xls/xlsx.lrm/lrmx.txt.zip/rar等). 一.解压处理 文件解压主要处 ...

  8. 使用Java解决远程文件下载解决方案

    使用Java高效率解决远程文件下载解决方案 项目发布,需要把老版数据文件迁移到新的服务器中,由于老版服务器中存在很多垃圾文件并且数量较大,全部迁移过去不太现实,所以就需要根据文件的地址将有用的文件下载 ...

  9. java webapp下文件下载,JavaWeb文件下载

    java 文件下载 在此之前需要先简绍一下常见的MIME类型,以供之后使使用: 内容类型 文件扩展名 描述 application/msword doc Microsoft Word applicat ...

  10. 基于Java的并发文件下载助手

    并发文件下载助手 设计实现过程 第 1 阶段 实现单个文件的下载功能 第一阶段的要求是,输入 url,保存路径,线程数目后实现多线程下载. 大体思路是根据 url,获取下载文件的大小.然后根据线程数目 ...

最新文章

  1. python install scikit-image后,报错ImportError: DLL load failed: 找不到指定的模块
  2. 【科普】AI的分类与演进
  3. 转载:Windows CE内存管理
  4. 怎么在win7链接无线网络连接服务器,Win7系统网络连接一直显示正在获取网络地址但是连不上网解决方法...
  5. Flutter实战之AS快键键
  6. Makefile编写练习题
  7. 比赛打不好怎么办——怎么制定NOI赛制的考试策略
  8. CMWAP和CMNET 的主要区别与适用范围
  9. 2023年湖北黄石初级工程师职称在哪里报名?评审条件是什么启程别
  10. 《智能路由器开发指南》核心笔记(全)
  11. GRUB4DOS中文自述文档;Grub4dos中文ReadMe
  12. 新概念三英语学习Unit2
  13. 【CSS3 基础】全面入门学习
  14. 如何在Cisco Packet Tracer中创建多个路由器虚拟局域网(方法一)
  15. 英语专业有计算机课程吗,英语专业转行学计算机能学好吗
  16. 区块链仿真工具SimBlock
  17. python3的初学者用jupyter导入csv数据的第一步
  18. 基于Matlab的汽车安全应用轨道融合仿真(附源码)
  19. 富勒烯C42、富勒烯-甘氨酸衍生物、聚合物PVP-富勒烯(C60)
  20. 日报周报月报工作总结生成器【智能文案生成器】

热门文章

  1. 可以弹出确认对话框的自定义Web服务器控件ConfirmButton
  2. Google Test(GTest)使用方法和源码解析——私有属性代码测试技术分析
  3. VS2013在Windows7 64位上变慢的解决方法
  4. 【C++】C++好书推荐
  5. 【H2645】帧间预测
  6. 【linux】Valgrind工具集详解(七):Memcheck(内存错误检测器)
  7. python基础与大数据_Python大数据基础与实战第10章数据可视化.pptx
  8. python与vb可以互换吗_vb能配合python写程序么?
  9. linux 输出重定向_Linux--文件描述符和stdin,stdout,stderr
  10. python 速度矢量_最近邻搜索4D空间python快速-矢量化