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日

相关文章

  • Mysql json类型字段Java+Mybatis数据字典功能的实践方式

    Mysql json类型字段Java+Mybatis数据字典功能的实践方式概述 Mysql支持json类型数据,在应用程序开发中,经常需要将json类型数据存储到数据库中。考虑到数据字典的实现方式,可以将字典数据以json的方式存储到Mysql数据库表中,Java+Mybatis数据字典功能是通过将json类型的数据解析出来,然后在应用程序中使用这些数据。 …

    Java 2023年5月20日
    00
  • 关于表格的正则表达式讨论(表格)

    关于表格的正则表达式讨论(表格) 在正则表达式中,我们可以使用表格来匹配特定格式的文本。表格通常由多行组成且使用特定的分隔符将每个单元格分开。以下是表格的正则表达式讨论的完整攻略。 表格中的分隔符 在表格中,必须指定其分隔符,以便正则表达式可以正确匹配表格。常用的分隔符包括制表符(\t),逗号(,),管道符(|)等等。以下是使用制表符分隔符的表格示例: Na…

    Java 2023年6月15日
    00
  • 详解JAVA的控制语句

    详解JAVA的控制语句 在Java中,控制语句是实现条件执行和循环执行的基础。本篇文章将详细讲解Java中的控制语句,分别包括if else、while、do while、for、foreach等语句,以及这些语句的作用、语法、注意事项和示例说明。 if else语句 if else 语句是Java中最常用的控制语句之一,它用于实现基于条件的分支执行,如果条…

    Java 2023年5月23日
    00
  • 详解SpringMVC 基础教程 简单入门实例

    《详解SpringMVC 基础教程》是一篇介绍SpringMVC框架的文章,本文将为读者提供完整攻略,以供参考和学习。 SpringMVC 简介 SpringMVC是基于MVC设计模式的Web框架,它能够帮助开发者快速地搭建Web应用,并提供了丰富的标签和注解,使得开发Web应用变得更加简单。其优点包括组件化、灵活性、可重用性等。 SpringMVC 基础教…

    Java 2023年5月16日
    00
  • linux自动重启tomcat脚本分享

    下面就为您讲解如何编写一个自动重启Tomcat的Linux脚本。 1. 编写脚本 可以使用Linux系统的crontab服务定时执行Tomcat的重启。在Linux系统的命令行中输入以下命令,进入vi编辑器: vi /root/restart_tomcat.sh 在编辑器中输入以下代码: #! /bin/bash pid=$(ps -ef | grep to…

    Java 2023年5月20日
    00
  • SpringSecurity定义多个过滤器链的操作代码

    要定义多个过滤器链,需要使用Spring Security提供的WebSecurityConfigurerAdapter类,该类可以用于配置Spring Security的安全性过滤器链。 以下是定义多个过滤器链的完整攻略: 创建一个类继承WebSecurityConfigurerAdapter类,并覆盖configure(HttpSecurity http…

    Java 2023年5月20日
    00
  • 详解Http请求中Content-Type讲解以及在Spring MVC中的应用

    详解HTTP请求中Content-Type讲解以及在Spring MVC中的应用 Content-Type是什么? 在HTTP协议中,Content-Type是一个请求头部和响应头部必不可少的属性,用来标识HTTP请求或响应体中的数据类型。常见的Content-Type类型有: text/html (html格式) application/json (jso…

    Java 2023年5月20日
    00
  • java易懂易用的MD5加密(可直接运行) (1)第2/2页

    下面是本文的完整攻略,包括概述、使用方法、代码解析和示例等: 概述 本文是介绍如何使用Java实现MD5加密的文章,所实现的MD5算法具有以下特点: 易懂易用:算法基于JDK自带的MessageDigest类,并使用了一些最新的Java 8语法来简化代码,保证了代码的易懂易用性。 可直接运行:作者提供了一份完整可运行的代码,用户只需复制该代码到Java项目中…

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