import java.io.*;
import java.net.*;
import java.util.*;
public class UrlDownload {
public final static boolean DEBUG = true;//是否输出调试信息
private static int BUFFER_SIZE = 8096;//缓冲区大小
private Vector vDownLoad = new Vector();//URL列表
private Vector vFileList = new Vector();//下载后的保存文件名列表
/**
* 构造方法
*/
public UrlDownload() {
}
/**
* 清除下载列表
*/
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());
//建立文件
File file = new File(fileName);
if(!file.exists()) {
if(!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
file.createNewFile();
}
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);
}
/**
* 设置认证用户名与密码
* @param uid String
* @param pwd String
*/
public void setAuthenticator(String uid, String pwd) {
//Authenticator.setDefault(new MyAuthenticator(uid, pwd));
}
/**
* 主方法(用于测试)
* @param argv String[]
* @throws IOException
*/
public static void main(String argv[]) throws IOException {
UrlDownload oInstance = new UrlDownload();
oInstance.addItem("http://192.168.1.2/demos/1.zip", "c:/1.zip");
oInstance.downLoadByList();
}
}
分享到:
相关推荐
在给定的代码片段中,展示了如何使用`HttpURLConnection`进行文件下载。 首先,我们看到代码引入了`java.io`、`java.net`和`java.util`这三个包。`java.io`包含了输入/输出流,用于处理数据的读写;`java.net`包含...
三、JAVA通过HttpURLConnection下载文件的方法 下面是一个使用HttpURLConnection下载文件的示例代码: ```java public class HttpConnectionUtil { public static void downloadFile(String url, String savePath...
以上就是通过URL下载并显示PDF文件的主要步骤和涉及的技术点。在实际项目中,可能还需要根据需求进行更多的定制,例如添加下载进度条、支持断点续传、处理文件权限问题等。通过熟练掌握这些技术,你可以构建出一个...
### 通过HTTP协议的URL下载文件(Java实现) 在现代软件开发中,通过网络协议(如HTTP/HTTPS)获取远程资源是一项基本而重要的任务。Java作为一种广泛应用的编程语言,提供了丰富的API来支持这类操作。本文将详细...
### HttpUrlConnection下载文件:Java实现详解 在Java编程中,`HttpUrlConnection`是用于发送HTTP请求和接收响应的标准工具之一。它提供了一个简单而强大的API来与Web服务器进行交互,包括GET、POST等HTTP方法。...
在Java编程环境中,当需要与Web服务器交互,例如上传文件时,`HttpURLConnection`是一个常见的选择,因为它提供了灵活且高效的方式。本篇文章将详细讲解如何使用`HttpURLConnection`实现文件上传,同时涉及到服务器...
1. **创建连接**:使用`URL`对象构造一个`HttpURLConnection`实例,通常会通过`openConnection()`方法来实现。例如: ```java URL url = new URL("http://yourserver.com/upload"); HttpURLConnection connection...
实例Demo程序来示范使用HttpURLConnection实现多线程下载。 使用多线程下载文件可以更快完成文件的下载,因为客户端启动多条线程进行下载就意味着服务器也需要为该客户端提供响应的服务。假设服务器同时最多服务100...
本篇将详细介绍如何使用Java实现基于URL的单个大文件分多线程下载。 首先,我们需要了解Java中的`java.net.URL`类,它代表一个统一资源定位符,是访问互联网资源的入口。通过`URL`对象,我们可以获取到网络资源,...
1. **使用HttpURLConnection下载文件**: - 首先,建立网络连接,通过`URL.openConnection()`创建HttpURLConnection对象。 - 设置请求方法,通常为GET或POST。 - 发送请求,并设置读取超时、连接超时等参数。 - ...
首先,我们需要创建一个`URL`对象,然后通过`openConnection()`方法获取`HttpURLConnection`实例。例如: ```java URL url = new URL("http://example.com/image.jpg"); HttpURLConnection connection = ...
HttpUrlConnection类是Android系统中的一种基本的网络请求方式,通过该类可以实现文件下载、上传等功能。 在本文中,我们将通过实例代码,介绍Android基于HttpUrlConnection类的文件下载功能。该实例代码可以帮助...
在本文中,我们将深入探讨如何使用HttpURLConnection实现文件上传,同时也会涉及普通参数的传递。 首先,我们需要理解HTTP请求的基本结构。HTTP请求通常由以下几个部分组成:请求行、请求头、空行和请求体。在文件...
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); InputStream in = connection.getInputStream(); ``` 这段代码会打开指定...
Java 通过 URL 下载文件并输出的方法 Java 通过 URL 下载文件并输出的方法是指在 Java 语言中使用 URL 连接来下载文件并将其输出到客户端的方法。本文将深入探讨这种方法的实现细节,并为开发者提供一个详细的参考...
本文将深入探讨“Netroid框架”和“HttpURLConnection类”的使用,并通过一个文件下载的示例来阐述如何利用它们进行文件传输,同时关注性能指标如下载速度。 **Netroid框架** Netroid是一个轻量级的Android网络...
JAVA 根据Url 接口 获取文件名称和类型,亲测可用。输入参数地址即可。
调用`connect()`方法建立实际的网络连接,然后通过`getInputStream()`获取服务器的响应流,准备下载文件。同时,创建一个本地文件的`FileOutputStream`用于写入接收到的数据。 5. **下载文件**: 使用`...
1. **建立连接**:创建`URL`对象,表示本地文件或目录所在的URL,然后通过`openConnection()`方法获取`HttpURLConnection`实例。 2. **设置请求方法**:由于默认的请求方法是GET,我们需要调用`setRequestMethod(...
多线程下载可以显著提高大文件的下载速度,通过分割文件并分配给多个线程同时下载。以下是多线程下载的基本步骤: 1. 计算每个线程需要下载的数据量,通常是文件大小除以线程数量。 2. 每个线程创建自己的...