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

下面我将为您详细讲解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日

相关文章

  • jsp有两个按钮来控制Timer的开始和结束方法

    首先,我们需要明确以下几点: JSP是Java Web开发中的一种技术,可以用来生成动态网页; Timer类是Java中的一个计时器类,可以用来定时执行某些操作。 有了以上的基础知识,我们就可以来讲解如何使用JSP和Timer来实现在网页上控制定时器的开始和结束方法了。 第一步,我们需要在JSP页面中创建两个按钮,一个用来启动计时器,一个用来停止计时器。可以…

    Java 2023年6月15日
    00
  • java后端把数据转换为树,map递归生成json树,返回给前端(后台转换)

    首先,需要明确一下这个过程的流程和目的:将后端获得的数据转换为树形结构,再通过递归生成 JSON 树,并返回给前端。下面我们将详细讲解这个过程。 1. 将数据转换为树形结构 首先,需要将后端的数据进行转换,变成树形结构。可以使用递归来完成这个过程。 具体实现方式如下:首先,定义一个树节点的类 Node,包含节点名称、节点编号、父节点编号、节点类型等属性。然后…

    Java 2023年5月26日
    00
  • AJAX省市区三级联动下拉菜单(java版)

    标题:实现AJAX省市区三级联动下拉菜单(Java版) 介绍:AJAX省市区三级联动下拉菜单是一种常见的网页交互方式。本文将介绍如何使用Java实现一个AJAX省市区三级联动下拉菜单。 步骤一:创建三个下拉框 首先,在web页面上创建三个下拉框,分别表示省、市、区。同时,为每个下拉框设置一个唯一的ID属性。 示例一: <select id="…

    Java 2023年5月20日
    00
  • Java+mysql实现学籍管理系统

    Java+MySQL实现学籍管理系统攻略 1. 系统功能说明 本学籍管理系统主要实现以下功能: 新增学生信息:添加学生姓名、性别、出生日期、身份证号、联系方式等信息; 修改学生信息:修改已有学生信息; 删除学生信息:删除已有学生信息; 查询学生信息:通过学生姓名或者身份证号来查询学生信息; 统计学生数量:统计已有学生的数量。 2. 开发环境和工具 开发平台:…

    Java 2023年5月19日
    00
  • EDI中JAVA通过FTP工具实现文件上传下载实例

    下面我将详细讲解“EDI中JAVA通过FTP工具实现文件上传下载”的完整攻略。 一、前言 EDI(Electronic Data Interchange,电子数据交换)是一种用于电子数据交换与管理的标准化方法。在EDI中,FTP(File Transfer Protocol,文件传输协议)是最常用的文件传输方式之一。本攻略将介绍如何在Java中通过FTP工具…

    Java 2023年5月20日
    00
  • Java 实战项目锤炼之小区物业管理系统的实现流程

    Java 实战项目锤炼之小区物业管理系统的实现流程 项目介绍 小区物业管理系统是一个面向物业管理公司、小区业主以及业主代表的系统,可以帮助物业管理公司进行小区日常管理和业务处理,实现业务流程自动化,提升工作效率和服务质量。 该系统的主要功能包括小区信息管理、业主信息管理、房屋信息管理、缴费管理、维修管理、投诉管理等。 实现流程 1.需求分析 在该阶段,我们需…

    Java 2023年5月24日
    00
  • 详解http请求中的Content-Type

    下面是关于“详解HTTP请求中的Content-Type”的完整攻略: 什么是Content-Type? 在HTTP请求中,Content-Type是一个HTTP头部字段,用于描述HTTP请求或响应中实际的内容类型。Content-Type的值是由MIME规范定义的。 Content-Type有哪些常见的类型? Content-Type有很多种类型,这里列举…

    Java 2023年6月15日
    00
  • 使用Python脚本对Linux服务器进行监控的教程

    接下来我会详细讲解如何使用Python脚本对Linux服务器进行监控的完整攻略。 1. 确定监控内容 在开始编写Python脚本之前,需要确定要监控的内容。比如我们可以监控Linux服务器的 CPU 使用率、内存使用率、磁盘占用情况、网络连接数等等。这里以 CPU 使用率为例。 2. 安装Python 在开始编写Python脚本之前,需要确保服务器中拥有Py…

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