Java实现HTTP文件下载(转)
文章出自: 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,我们可以很容易的完成对网络上资源的存取,下面的代码段就完成了对一个网站的资源进行访问:
- ......
- destUrl="http://www.ebook.com/java/网络编程001.zip";
- url = new URL(destUrl);
- httpUrl = (HttpURLConnection) url.openConnection();
- //连接指定的网络资源
- httpUrl.connect();
- //获取网络输入流
- bis = new BufferedInputStream(httpUrl.getInputStream());
- ......
......
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代码如下:
- //设置代理服务器
- System.getProperties().put("proxySet", "true");
- System.getProperties().put("proxyHost", "10.154.134.110");
- System.getProperties().put("proxyPort", "8080");
//设置代理服务器
System.getProperties().put("proxySet", "true");
System.getProperties().put("proxyHost", "10.154.134.110");
System.getProperties().put("proxyPort", "8080");
4. 网络资源的保存
在上节中,我们已经获取了指定网络资源的输入流,接下来我们要完成的就是读取输入流中的所以内容,并将其保存在文件中。示例代码:
- ......
- fos = new FileOutputStream(fileName);
- if (this.DEBUG)
- System.out.println("正在获取链接[" + destUrl + "]的内容...\n将其保存为文件[" + fileName +"]");
- //保存文件
- while ( (size = bis.read(buf)) != -1)
- fos.write(buf, 0, size);
- ......
转载于:https://blog.51cto.com/ajiao13/1138475
Java实现HTTP文件下载(转)相关推荐
- java实现远程文件下载
转自JAVA 实现远程文件下载 相信很多同学在实际的项目开发中都会遇到一个问题,如何跨服务下载文件?在传统SSH, SSH2, SSM架构中可能很少遇到这样的问题,但是在当前逐渐流行的微服务架构中,这 ...
- Java 之 Excel文件下载
Java 之 Excel文件下载 可以直接当作工具类使用 Controller业务层使用 做为Utils工具类使用 实例截图 图片三联 可以直接当作工具类使用 老规矩,废话不多说直接上代码: Cont ...
- java 下载加速_一种基于Java的大文件下载加速方法与流程
本发明涉及java/多线程技术领域,涉及一种加速文件下载装置,具体提供一种基于java的大文件下载加速方法. 背景技术: 现有的常用下载方式是基于浏览器的单线程下载.这种单线程下载的方式,是通过htt ...
- Java HttpServletResponse 多文件下载
测试 Java HttpServletResponse 多文件下载(ZIP压缩) 1 项目结构 2 Tomcat 配置 3 测试代码 3.1 FileDownloadServlet 3.2 FileU ...
- Java实现网络文件下载demo
Java实现网络文件下载demo import java.io.*; import java.net.HttpURLConnection; import java.net.URL;/*** @auth ...
- java实现高效文件下载
java实现高效文件下载 本文我们介绍几种方法下载文件.从基本JAVA IO 到 NIO包,也介绍第三方库的一些方法,如Async Http Client 和 Apache Commons IO. 最 ...
- Java多格式文件下载及解压处理
工作中遇到很多多格式文件下载压缩及解压处理,现将通用文件下载工具类做一个总结.包含格式(doc/docx.xls/xlsx.lrm/lrmx.txt.zip/rar等). 一.解压处理 文件解压主要处 ...
- 使用Java解决远程文件下载解决方案
使用Java高效率解决远程文件下载解决方案 项目发布,需要把老版数据文件迁移到新的服务器中,由于老版服务器中存在很多垃圾文件并且数量较大,全部迁移过去不太现实,所以就需要根据文件的地址将有用的文件下载 ...
- java webapp下文件下载,JavaWeb文件下载
java 文件下载 在此之前需要先简绍一下常见的MIME类型,以供之后使使用: 内容类型 文件扩展名 描述 application/msword doc Microsoft Word applicat ...
- 基于Java的并发文件下载助手
并发文件下载助手 设计实现过程 第 1 阶段 实现单个文件的下载功能 第一阶段的要求是,输入 url,保存路径,线程数目后实现多线程下载. 大体思路是根据 url,获取下载文件的大小.然后根据线程数目 ...
最新文章
- python install scikit-image后,报错ImportError: DLL load failed: 找不到指定的模块
- 【科普】AI的分类与演进
- 转载:Windows CE内存管理
- 怎么在win7链接无线网络连接服务器,Win7系统网络连接一直显示正在获取网络地址但是连不上网解决方法...
- Flutter实战之AS快键键
- Makefile编写练习题
- 比赛打不好怎么办——怎么制定NOI赛制的考试策略
- CMWAP和CMNET 的主要区别与适用范围
- 2023年湖北黄石初级工程师职称在哪里报名?评审条件是什么启程别
- 《智能路由器开发指南》核心笔记(全)
- GRUB4DOS中文自述文档;Grub4dos中文ReadMe
- 新概念三英语学习Unit2
- 【CSS3 基础】全面入门学习
- 如何在Cisco Packet Tracer中创建多个路由器虚拟局域网(方法一)
- 英语专业有计算机课程吗,英语专业转行学计算机能学好吗
- 区块链仿真工具SimBlock
- python3的初学者用jupyter导入csv数据的第一步
- 基于Matlab的汽车安全应用轨道融合仿真(附源码)
- 富勒烯C42、富勒烯-甘氨酸衍生物、聚合物PVP-富勒烯(C60)
- 日报周报月报工作总结生成器【智能文案生成器】
热门文章
- 可以弹出确认对话框的自定义Web服务器控件ConfirmButton
- Google Test(GTest)使用方法和源码解析——私有属性代码测试技术分析
- VS2013在Windows7 64位上变慢的解决方法
- 【C++】C++好书推荐
- 【H2645】帧间预测
- 【linux】Valgrind工具集详解(七):Memcheck(内存错误检测器)
- python基础与大数据_Python大数据基础与实战第10章数据可视化.pptx
- python与vb可以互换吗_vb能配合python写程序么?
- linux 输出重定向_Linux--文件描述符和stdin,stdout,stderr
- python 速度矢量_最近邻搜索4D空间python快速-矢量化