Java下载文件的四种方式详细代码

yizhihongxing

下面我将为您详细讲解Java下载文件的四种方式和完整代码。

一、使用Java自带的URL类进行文件下载

使用Java自带的URL类可以方便地进行文件下载,步骤如下:

  1. 创建一个URL对象,指定需要下载的文件链接。
  2. 打开 URL 连接,获取 InputStream 对象,用于读取远程文件流。
  3. 创建文件输出流对象,用于保存下载的文件。
  4. 读取远程文件并将其写入到本地文件中。
  5. 关闭输入输出流,释放资源。

示例代码如下:

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()方法即可。步骤如下:

  1. 创建一个URL对象,指定需要下载的文件链接。
  2. 使用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连接网络资源,完成文件下载。步骤如下:

  1. 创建一个URL对象,指定需要下载的文件链接。
  2. 打开 URL 连接,获取 HttpURLConnection 对象。
  3. 使用 HttpURLConnection 对象设置请求头信息,并输入流读取服务器的响应数据。
  4. 创建文件输出流对象,将响应数据流输出到本地文件。
  5. 关闭输入输出流,释放资源。

示例代码如下:

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组件可以更加方便地进行文件下载,步骤如下:

  1. 创建 HttpClient 对象。
  2. 创建 HttpGet 对象并设置需要下载的文件链接。
  3. 使用 HttpResponse 对象获取响应信息,并使用 EntityUtils 执行响应体中的内容解析。
  4. 创建文件输出流对象,将响应数据流输出到本地文件。
  5. 关闭输入输出流,释放资源。

示例代码如下:

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技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • spring boot基于Java的容器配置讲解

    下面给出关于“spring boot基于Java的容器配置讲解”的完整攻略。 什么是Spring Boot? Spring Boot是一种基于Spring框架的快速应用开发框架。使用Spring Boot可以快速构建可部署的、生产级别的Spring应用程序,而不需要编写大量的代码,因为它提供了几乎所有的配置。 Spring Boot容器配置 在Spring …

    Java 2023年5月19日
    00
  • 浅析java的foreach循环

    下面是针对“浅析Java的foreach循环”的完整攻略: 什么是foreach循环 foreach循环,也被称为增强型for循环,是Java语言中一种用于遍历数组和集合类的循环结构。通过foreach循环,我们可以简化数组和集合的遍历过程,不需要手动去控制下标或迭代器的使用。 foreach循环的语法 foreach循环的语法结构如下: for (元素类型…

    Java 2023年5月26日
    00
  • 简单了解springboot的jar包部署步骤

    下面是关于“简单了解springboot的jar包部署步骤”的完整攻略: 步骤一:打包 首先需要通过Maven或Gradle将Spring Boot应用程序打包成可执行的Jar文件,命令为: mvn clean package 或者 ./gradlew clean build 这个命令将在target目录(Maven)或build/libs(Gradle)中…

    Java 2023年5月19日
    00
  • Spring Security登录表单配置示例详解

    完整攻略: Spring Security登录表单配置示例详解 Spring Security是一个功能强大的框架,它可以帮助我们管理Web应用程序中的授权、认证以及安全性问题。在使用Spring Security的过程中,一个非常常见的场景就是实现用户的登录和登出功能。本文将通过示例演示如何登录和登出用户。 这是一个怎样的示例? 本示例提供了一种使用Spr…

    Java 2023年6月3日
    00
  • Java中SimpleDateFormat日期格式转换详解及代码示例

    下面就详细讲解一下“Java中SimpleDateFormat日期格式转换详解及代码示例”的攻略。 1. 什么是SimpleDateFormat SimpleDateFormat是Java中一个非常实用的日期格式化类,它能够将日期按照指定的格式进行转换,并且还支持将字符串转换成日期。SimpleDateFormat类的格式化符号遵循类似于Unix系统下的日期…

    Java 2023年5月20日
    00
  • Java Object类详解_动力节点Java学院整理

    Java Object类详解_动力节点Java学院整理 简介 Object类是Java中所有类的根类。在Java中,每个类都直接或间接继承自Object类。因此,Object类的方法在Java中可被任意对象使用。在Java中,通过继承以及实现Object类中的方法,可以获得以下功能: 重写equals()方法,实现对象之间的比较; 重写hashCode()方…

    Java 2023年5月26日
    00
  • 通过Class类获取对象(实例讲解)

    通过Class类获取对象的步骤: 导入java.lang.reflect包中的Class类 使用Class类的forName()方法获取类对象 使用类对象的newInstance()方法创建实例 示例1: import java.lang.reflect.*; class Person { private String name; public void s…

    Java 2023年5月26日
    00
  • java基于控制台的学生学籍管理系统

    Java基于控制台的学生学籍管理系统攻略 Java基于控制台的学生学籍管理系统是一个简单的功能系统,它可以实现输入学生的基本信息,并且可以进行修改、删除、查询和统计等操作。下面是详细的攻略方案: 1. 项目创建与初始化 首先需要打开编辑器,比如Eclipse或者IntelliJ IDEA,创建一个Java项目,选择控制台应用程序作为项目类型,命名为Stude…

    Java 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部