下面我将为您详细讲解Java下载文件的四种方式和完整代码。
一、使用Java自带的URL类进行文件下载
使用Java自带的URL类可以方便地进行文件下载,步骤如下:
- 创建一个URL对象,指定需要下载的文件链接。
- 打开 URL 连接,获取 InputStream 对象,用于读取远程文件流。
- 创建文件输出流对象,用于保存下载的文件。
- 读取远程文件并将其写入到本地文件中。
- 关闭输入输出流,释放资源。
示例代码如下:
import java.io.*;
import java.net.URL;
public class DownloadFileDemo {
public static void main(String[] args) {
try {
// 1.创建URL对象
URL url = new URL("http://www.example.com/test.png");
// 2.打开URL连接
InputStream inputStream = url.openStream();
// 3.创建文件输出流
FileOutputStream fileOutputStream = new FileOutputStream("E:/download/test.png");
// 4.读取远程文件并保存到本地
int length;
byte[] buffer = new byte[1024];
while ((length = inputStream.read(buffer)) > 0) {
fileOutputStream.write(buffer, 0, length);
}
// 5.关闭输入输出流
inputStream.close();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
二、使用commons-io库进行文件下载
使用commons-io库可以更方便地进行文件下载,使用其中的FileUtils.copyURLToFile()
方法即可。步骤如下:
- 创建一个URL对象,指定需要下载的文件链接。
- 使用
FileUtils.copyURLToFile()
方法进行文件下载。
示例代码如下:
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
public class DownloadFileDemo {
public static void main(String[] args) {
try {
// 1.创建URL对象
URL url = new URL("http://www.example.com/test.png");
// 2.使用FileUtils.copyURLToFile()方法进行文件下载
FileUtils.copyURLToFile(url, new File("E:/download/test.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
三、使用URLConnection进行文件下载
使用URLConnection连接网络资源,完成文件下载。步骤如下:
- 创建一个URL对象,指定需要下载的文件链接。
- 打开 URL 连接,获取 HttpURLConnection 对象。
- 使用 HttpURLConnection 对象设置请求头信息,并输入流读取服务器的响应数据。
- 创建文件输出流对象,将响应数据流输出到本地文件。
- 关闭输入输出流,释放资源。
示例代码如下:
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
public class DownloadFileDemo {
public static void main(String[] args) {
try {
// 1.创建URL对象
URL url = new URL("http://www.example.com/test.png");
// 2.打开URL连接,获取 HttpURLConnection 对象
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
// 3.设置请求头信息,并输入流读取服务器的响应数据
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
InputStream inputStream = httpURLConnection.getInputStream();
// 4.创建文件输出流对象,将响应数据流输出到本地文件
FileOutputStream fileOutputStream = new FileOutputStream("E:/download/test.png");
int length;
byte[] buffer = new byte[1024];
while ((length = inputStream.read(buffer)) > 0) {
fileOutputStream.write(buffer, 0, length);
}
// 5.关闭输入输出流,释放资源
inputStream.close();
fileOutputStream.close();
httpURLConnection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
四、使用HttpComponents进行文件下载
使用Apache的HttpClient框架提供的HttpComponents组件可以更加方便地进行文件下载,步骤如下:
- 创建 HttpClient 对象。
- 创建 HttpGet 对象并设置需要下载的文件链接。
- 使用 HttpResponse 对象获取响应信息,并使用 EntityUtils 执行响应体中的内容解析。
- 创建文件输出流对象,将响应数据流输出到本地文件。
- 关闭输入输出流,释放资源。
示例代码如下:
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.FileOutputStream;
import java.io.IOException;
public class DownloadFileDemo {
public static void main(String[] args) {
try {
// 1.创建 HttpClient 对象
CloseableHttpClient httpClient = HttpClients.createDefault();
// 2.创建 HttpGet 对象并设置需要下载的文件链接
HttpGet httpGet = new HttpGet("http://www.example.com/test.png");
// 3.使用 HttpResponse 对象获取响应信息,并使用 EntityUtils 执行响应体中的内容解析
CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
byte[] responseBody = EntityUtils.toByteArray(httpResponse.getEntity());
// 4.创建文件输出流对象,将响应数据流输出到本地文件
FileOutputStream fileOutputStream = new FileOutputStream("E:/download/test.png");
fileOutputStream.write(responseBody);
// 5.关闭输入输出流,释放资源
httpResponse.close();
fileOutputStream.close();
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上就是四种Java下载文件的方式的完整代码和详细步骤。希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java下载文件的四种方式详细代码 - Python技术站