- 浏览: 257103 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
a542550187:
很受用,最近正好学习软件工程方面的知识
如何建立领域模型(转) -
liiyee:
谢谢!中文版有些地方的翻译实在是挺对付的。
hibernate in action 2 英文版 -
HFLdragon:
下来学习一下
ajax upload file -
wendellup_account1:
thanks....
Spring 3 mvc Validation的错误 -
zhangjq5:
中文名乱码……
ajax upload file
序言
许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。
在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());
......
3. 代理的访问
Java 中通过代理服务器访问外网的方法已经是世人皆知的秘密了。这里就不再多描述了,访问的JAVA代码如下:
//设置代理服务器 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);
......
上面的示例代码就将网络资源的内容保存到了本地指定的文件中。
5. 代码清单
/** * <p>Description: 将指定的HTTP网络资源在本地以文件形式存放</p> */ public class SaveFile { public final static boolean DEBUG = true; // 调试用 private static int BUFFER_SIZE = 8096; // 缓冲区大小 private Vector vDownLoad = new Vector(); // URL列表 private Vector vFileList = new Vector(); // 下载后的保存文件名列表 /** * * 构造方法 */ public SaveFile() {} /** * * 清除下载列表 */ public void resetList() { vDownLoad.clear(); vFileList.clear(); } /** * * 增加下载列表项 * * * * @param url * String * * @param filename * String */ public void addItem(String url, String filename) { vDownLoad.add(url); vFileList.add(filename); } /** * * 根据列表下载资源 */ public void downLoadByList() { String url = null; String filename = null; // 按列表顺序保存资源 for (int i = 0; i < vDownLoad.size(); i++) { url = (String) vDownLoad.get(i); filename = (String) vFileList.get(i); try { saveToFile(url, filename); } catch (IOException err) { if (DEBUG) { System.out.println("资源[" + url + "]下载失败!!!"); } } } if (DEBUG) { System.out.println("下载完成!!!"); } } /** * 将HTTP资源另存为文件 * * @param destUrl * String * @param fileName * String * @throws Exception */ public void saveToFile(String destUrl, String fileName) throws IOException { FileOutputStream fos = null; BufferedInputStream bis = null; HttpURLConnection httpUrl = null; URL url = null; byte[] buf = new byte[BUFFER_SIZE]; int size = 0; // 建立链接 url = new URL(destUrl); httpUrl = (HttpURLConnection) url.openConnection(); // 连接指定的资源 httpUrl.connect(); // 获取网络输入流 bis = new BufferedInputStream(httpUrl.getInputStream()); // 建立文件 fos = new FileOutputStream(fileName); if (this.DEBUG) System.out.println("正在获取链接[" + destUrl + "]的内容...\n将其保存为文件[" + fileName + "]"); // 保存文件 while ((size = bis.read(buf)) != -1) fos.write(buf, 0, size); fos.close(); bis.close(); httpUrl.disconnect(); } /** * 将HTTP资源另存为文件 * * @param destUrl * String * @param fileName * String * @throws Exception */ public void saveToFile2(String destUrl, String fileName) throws IOException { FileOutputStream fos = null; BufferedInputStream bis = null; HttpURLConnection httpUrl = null; URL url = null; byte[] buf = new byte[BUFFER_SIZE]; int size = 0; // 建立链接 url = new URL(destUrl); httpUrl = (HttpURLConnection) url.openConnection(); // String authString = "username" + ":" + "password"; String authString = "50301" + ":" + "88888888"; String auth = "Basic " + new sun.misc.BASE64Encoder().encode(authString.getBytes()); httpUrl.setRequestProperty("Proxy-Authorization", auth); // 连接指定的资源 httpUrl.connect(); // 获取网络输入流 bis = new BufferedInputStream(httpUrl.getInputStream()); // 建立文件 fos = new FileOutputStream(fileName); if (this.DEBUG) System.out.println("正在获取链接[" + destUrl + "]的内容...\n将其保存为文件[" + fileName + "]"); // 保存文件 while ((size = bis.read(buf)) != -1) fos.write(buf, 0, size); fos.close(); bis.close(); httpUrl.disconnect(); } /** * 设置代理服务器 * * @param proxy * String * @param proxyPort * String */ public void setProxyServer(String proxy, String proxyPort) { // 设置代理服务器 System.getProperties().put("proxySet", "true"); System.getProperties().put("proxyHost", proxy); System.getProperties().put("proxyPort", proxyPort); } public void setAuthenticator(String uid, String pwd) { Authenticator.setDefault(new MyAuthenticator()); } /** * 主方法(用于测试) * * @param argv * String[] */ public static void main(String argv[]) { HttpGet oInstance = new HttpGet(); try { // //增加下载列表(此处用户可以写入自己代码来增加下载列表) // oInstance.addItem("http://www.~~~.com/java/网络编程001.zip","./网络编程1.zip");// // oInstance.addItem("http://www.~~~.com/java/网络编程002.zip","./网络编程2.zip"); // oInstance.addItem("http://www~~~.com/java/网络编程003.zip","./网络编程3.zip"); // //开始下载 // oInstance.downLoadByList(); oInstance.saveToFile("http://www~~~.com/java/网络编程001.zip", "./down.zip"); } catch (Exception err) { System.out.println(err.getMessage()); } } }
发表评论
-
IDEA EvalRest
2022-03-10 17:19 0Download and install plugi ... -
使用maven-jar-plugin将部分源代码打成Jar,并引入到项目使用。
2020-05-08 16:40 714需求:因为项目(单体系统)里尽可能保证项目里一部分源码,所以 ... -
CAS与spring3集成
2013-04-12 09:47 1126CAS 下载地址 https://wiki.jasig.o ... -
如何在Spring 3 MVC整合Apache CXF开发Webservice服务
2012-09-11 16:06 3558如何在Spring 3 MVC框架下结合CXF开发Webser ... -
如何在Spring 3 下结合结束大CXF开发WebService接口
2012-09-10 21:15 0如何从Spring 3 MVC架构下与Apache CXF开发 ... -
Java文件简单读写(转)
2011-10-22 15:45 885最近用Java处理文件的时候,同样遇到了中文问题,觉得还是 ... -
Java基本类型与包装类判断
2011-10-22 13:42 14497public class Test{ public sta ... -
Java深度历险合集
2011-08-26 16:43 858Java深度历险.pdf -
Apache Click 一个Java企业版的Web应用程序框架
2011-08-24 13:52 878Apache Click 是一个先进的Java企业版的Web应 ... -
Java的异常处理总结
2011-08-10 22:42 1312一、 异常的概念和Java异常体系结构 异常是程 ... -
Java反射与动态代理
2011-07-01 16:24 0在介绍Java注解的时候,多次提到了Java的反射 ... -
Red5+OpenOffice+OpenMeetings架设视频会议网络(转)
2011-05-25 14:17 1754因工作需要,这两天弄 ... -
DOM4J学习笔记(转)
2011-02-16 15:47 594Loading XML Data 以下代码从File中或 ... -
Hibernate级联删除的问题
2011-01-25 14:50 1024在one-to-many 关联时,one方一般都需要有控制级联 ... -
fmt:formatDate 的输出格式
2011-01-22 23:28 958fmt:formatDate 的输出格式 <fmt ... -
Tomcate启动内存设置
2010-10-19 16:41 742其初始空间(即-Xms)是物理内存的1/64,最大空 ... -
基于json-lib.jar包Json实例程序(转)
2010-10-18 20:22 3473基于json-lib.jar包Json实例程序 ... -
Aache下的AB性能测试工具(转)
2010-10-18 16:57 899以前安装好APACHE总是 ... -
四步将Myeclipse的web project部署到eclipse中的tomcat
2010-10-15 16:29 2104现在很多Web的项目都是在MyEclipse中开发测试完成的 ... -
实现集合中对象的排序功能
2010-09-29 18:10 720利用Set可以去掉重复的对象,利用list可以对象自然排序,如 ...
相关推荐
在Java编程中,实现HTTP文件下载、解压以及入库是一系列常见的操作,这些功能在许多应用程序和服务中都可能用到。下面将详细讲解这个过程涉及的知识点。 首先,我们需要了解HTTP文件下载的基本原理。HTTP(超文本...
在提供的"Java实现HTTP文件下载_(转载).txt"文件中,可能包含了具体的示例代码或进一步的解释。通过阅读和理解这份文档,开发者可以更好地掌握Java文件下载的实现技巧。在实际应用中,可以根据项目需求进行相应的...
在现代Web应用中,用户对交互性和...总结起来,Ajax实现Java文件下载是一种提高用户体验的有效手段,通过前后端的协同工作,实现了无刷新的文件下载功能。理解并掌握这一技术,对于提升Web应用的交互性具有重要意义。
【Java实现HTTP文件队列下载】教程 在2022年的互联网环境下,高效地下载大量分散的HTTP文件成为了一项必要的技能。本教程将详细讲解如何使用Java语言实现HTTP文件队列下载,以解决手动下载数百乃至数千个文件的难题...
【Java实现HTTP文件队列下载】技术讲解 在互联网上,高效地下载大量分块存储的资源是一项常见的需求。本文将详细介绍如何使用Java语言实现HTTP文件的队列下载功能,帮助开发者解决批量下载的问题。 1. **基础知识*...
现在,我们转向主题,即如何在Java中实现PDF文件的下载。有两种主要的方式: 1. **通过系统路径下载**:这种方式适用于后台生成PDF后,直接保存到服务器的某个路径,然后提供URL给用户下载。以下是一个简单的示例:...
### Java实现文件下载功能 在IT领域,尤其是Web开发中,文件下载是常见的需求之一,例如用户可能需要从服务器下载各种类型的文件,如文档、图片、压缩包等。本文将详细解析如何使用Java来实现这一功能,特别是针对...
### JAVA实现文件下载 在Java开发中,实现文件下载是一个常见的功能需求,尤其是在Web应用程序中。本文将详细介绍如何使用Java代码实现基于HTTP响应的文件下载功能,并深入解析代码中的关键部分。 #### 函数定义与...
总结来说,这段代码演示了如何使用Java和JSP创建一个简单的文件下载服务,处理了字符编码问题,设置了正确的HTTP响应头,并将文件内容流式传输到客户端。这是一个基础的下载服务实现,适用于小规模应用,但实际生产...
在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库中。这个过程涉及到多个关键知识点,下面我们将详细探讨。 1. **Java Socket基础**:...
### Java文件下载的几种方式详解 在Java编程中,文件下载是常见的操作之一,无论是从本地文件系统还是网络上下载文件,都需要掌握一定的技巧和方法。本文将详细介绍几种常用的Java文件下载方式,包括本地文件下载、...
在Java开发中实现文件下载功能是一项常见需求,尤其是在Web应用中。文件下载功能涉及到客户端与服务器端之间的交互,服务器需要将文件内容发送给客户端浏览器,然后由浏览器负责保存或打开该文件。Java Web开发中...
不过,由于这里涉及到跨平台交互,通常我们会使用Java的网络I/O来实现HTTP或FTP服务器,用户可以通过浏览器进行文件上传和下载。 创建HTML界面可以使用HTML、CSS和JavaScript技术。HTML5引入了`<input type="file">...
本篇文章将深入探讨如何使用Java实现文件下载,并基于提供的"JAVA实现文件下载的代码.txt"文件进行解析和解释。 首先,我们需要理解文件下载的基本流程。当用户在浏览器中点击一个下载链接时,请求会被发送到服务器...
对于文件下载,"FileUpLoad"项目使用了流来优化速度。当用户请求下载文件时,服务器通过Servlet生成一个包含文件内容的响应,然后使用`ServletOutputStream`将文件内容写入到HTTP响应的输出流中。这里的关键是控制流...
Java 实现 FTP 批量大文件上传下载 本文介绍了如何使用 Java 实现 FTP 服务器上的大批量文件的上传和下载,处理大文件的上传和下载。通过 Java 现有的可用的库来编写 FTP 客户端代码,并开发成 Applet 控件,做成...
本文将深入探讨如何使用Java实现文件下载,并在客户端弹出保存对话框,特别聚焦于Excel文件的处理,这在企业级应用中尤为常见。 ### Java实现文件下载的关键步骤 1. **设置HTTP响应头**:为了触发浏览器的下载行为...
这里我们将深入探讨这些功能的实现,并结合标签`java xpdf java实现pdf`来讨论XPDF库在Java中的应用。 1. **PDF上传**: PDF上传通常涉及用户通过Web界面或API接口提交PDF文件。Java中,可以使用Apache Commons ...