Java下载文件的4种方式总结

以下是Java下载文件的4种方式总结的详细攻略:

一、通过URL类下载文件

Java中可以通过URL类来下载远程文件,具体步骤如下:

  1. 创建一个URL对象,指定远程文件的URL地址;
URL url = new URL("http://example.com/file/file.txt");
  1. 打开URL连接;
URLConnection conn = url.openConnection();
  1. 获取输入流,读取远程文件;
InputStream in = conn.getInputStream();
  1. 创建一个本地文件输出流,并写入读取到的数据;
OutputStream out = new FileOutputStream("C:\\file.txt");
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
    out.write(buffer, 0, len);
}
  1. 最后关闭输入输出流;
in.close();
out.close();

以上也可以封装成一个方法,方便调用。示例代码如下:

public static void downloadFileByURL(String fileURL, String saveDir) throws IOException {
    URL url = new URL(fileURL);
    URLConnection conn = url.openConnection();
    InputStream in = conn.getInputStream();
    File file = new File(saveDir);
    if (!file.exists()) {
        file.mkdirs();
    }
    String fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1);
    FileOutputStream out = new FileOutputStream(saveDir + File.separator + fileName);
    byte[] buffer = new byte[1024];
    int len;
    while ((len = in.read(buffer)) != -1) {
        out.write(buffer, 0, len);
    }
    in.close();
    out.close();
}

二、通过HttpClient下载文件

HttpClient是一款开源的HTTP客户端库,可以发送HTTP请求,并且支持HTTPS、代理、Cookie等特性。可以通过HttpClient下载远程文件,具体步骤如下:

  1. 创建一个HttpClient对象;
CloseableHttpClient httpClient = HttpClients.createDefault();
  1. 创建一个HttpGet对象,指定远程文件的URL地址;
HttpGet httpGet = new HttpGet("http://example.com/file/file.txt");
  1. 执行HttpGet请求,获取HttpResponse响应;
CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
  1. 获取响应实体,读取远程文件;
HttpEntity entity = httpResponse.getEntity();
InputStream in = entity.getContent();
  1. 创建一个本地文件输出流,并写入读取到的数据;
OutputStream out = new FileOutputStream("C:\\file.txt");
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
    out.write(buffer, 0, len);
}
  1. 最后关闭输入输出流、HttpResponse、HttpClient;
in.close();
out.close();
httpResponse.close();
httpClient.close();

以上也可以封装成一个方法,方便调用。示例代码如下:

public static void downloadFileByHttpClient(String fileURL, String saveDir) throws IOException {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpGet httpGet = new HttpGet(fileURL);
    CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
    HttpEntity entity = httpResponse.getEntity();
    InputStream in = entity.getContent();
    File file = new File(saveDir);
    if (!file.exists()) {
        file.mkdirs();
    }
    String fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1);
    OutputStream out = new FileOutputStream(saveDir + File.separator + fileName);
    byte[] buffer = new byte[1024];
    int len;
    while ((len = in.read(buffer)) != -1) {
        out.write(buffer, 0, len);
    }
    in.close();
    out.close();
    httpResponse.close();
    httpClient.close();
}

三、通过FileUtils下载文件

FileUtils是Apache Commons IO的一部分,是一款常用的Java IO工具类库,可以简化一些IO操作,其中包括下载文件的功能。具体步骤如下:

  1. 指定远程文件的URL地址;
String fileURL = "http://example.com/file/file.txt";
  1. 指定本地文件保存位置;
String saveDir = "C:\\";
  1. 调用FileUtils.copyURLToFile方法,下载远程文件并保存到本地;
FileUtils.copyURLToFile(new URL(fileURL), new File(saveDir + File.separator + fileName));

以上也可以封装成一个方法,方便调用。示例代码如下:

public static void downloadFileByFileUtils(String fileURL, String saveDir) throws IOException {
    File file = new File(saveDir);
    if (!file.exists()) {
        file.mkdirs();
    }
    String fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1);
    FileUtils.copyURLToFile(new URL(fileURL), new File(saveDir + File.separator + fileName));
}

四、通过Jsoup下载文件

Jsoup是一款Java的HTML解析器,可以解析HTML文档、从中提取数据、修改数据内容等。在Jsoup中也有下载文件的功能,具体步骤如下:

  1. 创建一个Connection对象,指定远程文件的URL地址;
Connection conn = Jsoup.connect("http://example.com/file/file.txt");
  1. 执行连接,获取响应;
Response response = conn.execute();
  1. 获取响应体,读取远程文件;
byte[] bytes = response.bodyAsBytes();
  1. 创建一个本地文件输出流,并写入读取到的数据;
OutputStream out = new FileOutputStream("C:\\file.txt");
out.write(bytes);
  1. 最后关闭输入输出流;
out.close();

以上也可以封装成一个方法,方便调用。示例代码如下:

public static void downloadFileByJsoup(String fileURL, String saveDir) throws IOException {
    Connection conn = Jsoup.connect(fileURL);
    Response response = conn.execute();
    byte[] bytes = response.bodyAsBytes();
    File file = new File(saveDir);
    if (!file.exists()) {
        file.mkdirs();
    }
    String fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1);
    OutputStream out = new FileOutputStream(saveDir + File.separator + fileName);
    out.write(bytes);
    out.close();
}

以上就是Java下载文件的四种方式总结的详细攻略,希望能够帮助到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java下载文件的4种方式总结 - Python技术站

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

相关文章

  • Android 中利用 ksoap2 调用 WebService的示例代码

    当我们需要在Android应用中调用网络服务时,可以通过使用Web Service来实现。在Android中使用ksoap2库可以简单地实现Web Service调用。下面是使用ksoap2库在Android中调用WebService的步骤示例。 步骤一:导入ksoap2库文件 将ksoap2的jar文件拷贝到Android项目的libs目录下,并在buil…

    Java 2023年6月15日
    00
  • Spring使用xml方式整合第三方框架流程详解

    Spring框架是一个非常流行的Java框架,通过使用Spring框架,我们可以更加容易地开发和管理Java应用程序。它提供了各种功能和模块,使得我们可以使用各种第三方框架和库来构建复杂的应用程序。同时,Spring框架也提供了与第三方框架的整合工具,以简化整合流程。 本文将主要介绍如何使用Spring的xml方式来整合第三方框架的流程和步骤。 引入第三方框…

    Java 2023年5月19日
    00
  • 详解基于MVC的数据查询模块进行模糊查询

    讲解“详解基于MVC的数据查询模块进行模糊查询”的攻略如下: 一、MVC模式简介 MVC(Model-View-Controller)是一种应用程序设计模式,用于分离用户界面和业务逻辑。其中,Model表示数据和业务逻辑,View表示用户界面,Controller表示用户和数据之间的中介。MVC模式的优点在于可以提高代码的可维护性和灵活性,方便多人协作开发。…

    Java 2023年6月16日
    00
  • Apache Log4j2 报核弹级漏洞快速修复方法

    下面我来为您讲解“Apache Log4j2报核弹级漏洞快速修复方法”的完整攻略。 一、背景介绍 在2021年12月8日,美国网络安全局 (NSA) 警告公众一种名为 Log4Shell 的漏洞,该漏洞存在于 Log4j 2.x 中,攻击者可通过该漏洞远程执行代码,甚至可以获得系统控制权。由于该漏洞的严重性,被称为“核弹级漏洞”。 二、修复方法 1.更新 L…

    Java 2023年6月2日
    00
  • 基于jsp的井字游戏实例

    让我详细讲解一下“基于jsp的井字游戏实例”的完整攻略,具体如下: 1. 概述 本教程将介绍如何使用jsp开发一个简单的井字游戏,主要包括前端界面设计和涉及的后端交互,帮助读者理解jsp技术的应用和实现过程。 2. 前端界面设计 在本次实例中,我们将使用html和css设计前端界面,并使用javascript来完成井字游戏的交互逻辑。具体实现如下: 首先我们…

    Java 2023年6月15日
    00
  • Spring boot Mybatis 整合(完整版)

    下面我就为您详细讲解“SpringbootMybatis整合(完整版)”的完整攻略。 简介 在介绍完整攻略之前,我先来简单介绍一下SpringBoot和Mybatis。 Spring Boot是Spring家族的一款新型的轻量级框架。它本身封装了许多传统配置,使开发人员可以非常迅速地开发Spring应用程序。而Mybatis则是一款持久层框架,用来操作数据库…

    Java 2023年5月15日
    00
  • java怎么连接并访问activemq

    要连接并访问ActiveMQ,需要经历以下几个步骤: 获取ActiveMQ连接工厂对象 创建连接对象 创建会话对象 创建消息对象 发送或接收消息 以下是Java连接并访问ActiveMQ的完整攻略: 1. 引入依赖 首先,需要引入ActiveMQ的依赖包。可以在项目的pom.xml中添加以下代码: <dependency> <groupId…

    Java 2023年5月26日
    00
  • SpringBoot分离打Jar包的两种配置方式

    Spring Boot 是一种快速创建独立的、基于Spring的应用程序的方式,具有代码少、配置简单、开发效率高、开箱即用等特点。在实际应用中,我们通常需要将 Spring Boot 应用程序打包为一个可执行的 jar 包,以方便进行部署和运行。而分离打 jar 包则是将引用的依赖库全部打包进来的方式,使得打包后的 jar 包可以直接运行,不需要依赖外部的类…

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