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日

相关文章

  • eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置数据库连接池

    以下是针对”eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置数据库连接池”的完整攻略,包括两条示例说明: 1. 配置Tomcat服务器 首先,需要在Eclipse中配置Tomcat服务器,以便将自己的web项目部署到Tomcat中进行测试。步骤如下: 在Eclipse中点击”Window -> Preferen…

    Java 2023年6月16日
    00
  • IDEA中如何查找jar包之间的依赖关系并忽略依赖的某个包

    在IDEA中查找jar包之间的依赖关系并忽略依赖的某个包,可以使用”Maven Dependency Analyzer”插件。 下面是具体步骤: 打开IDEA,选择“File” -> “Settings” -> “Plugins”,搜索“Maven Dependency Analyzer”插件并安装。 打开项目,选择“View” -> “T…

    Java 2023年5月19日
    00
  • JAVA如何调用Shell脚本

    Java 调用 Shell 脚本可以通过 Java 的 Runtime 类或者 ProcessBuilder 类来实现。 通过 Runtime 类调用 Shell 脚本 Java Runtime 类提供了访问 Java 应用程序运行时环境的方法。下面是通过 Runtime 类调用 Shell 脚本的示例代码: import java.io.BufferedR…

    Java 2023年5月26日
    00
  • JSP代码实现 金字塔(倒置)示例

    下面我将为你详细讲解“JSP代码实现金字塔(倒置)示例”的完整攻略。 1. 编写 JSP 页面 我们首先需要编写一个 JSP 页面来实现金字塔倒置的功能。在 JSP 页面中,我们需要使用嵌入式 Java 代码来实现金字塔倒置的逻辑。以下是一个示例的 JSP 页面: <%@ page language="java" contentTy…

    Java 2023年6月15日
    00
  • spring+Jpa多数据源配置的方法示例

    首先,我们需要了解一下Spring中多数据源配置的基本原理。Spring中,我们可以使用AbstractRoutingDataSource实现多数据源的配置。该类是抽象类,我们需要根据不同的业务需求去实现其抽象方法determineCurrentLookupKey(),来实现不同数据源动态切换的需求。 下面是Spring+Jpa多数据源配置的方法示例: 引入…

    Java 2023年5月20日
    00
  • Java日常练习题,每天进步一点点(60)

    首先,这是一篇Java日常练习题的攻略,包含了60个练习题目,帮助学习Java的人每天进步一点点。本文分为如下部分: 攻略简介 练习题目列表 示例说明 攻略简介 这篇攻略共包含了60个Java练习题目,力求帮助Java学习者过好编程的每一天。每个练习题目的描述都很清晰明了,题目中包含了需要完成的任务,做完题目后会有详细的答案和代码解释。通过这些练习题目的完成…

    Java 2023年5月23日
    00
  • Java多线程程序中synchronized修饰方法的使用实例

    下面是Java多线程程序中synchronized修饰方法的使用实例的详细攻略。 什么是多线程和synchronized? 多线程是指在同一时间内,多个线程同时执行,每个线程负责执行其中一部分代码,以达到加速程序运行的目的。 synchronized是Java中实现线程同步的关键字,它可以用来修饰方法或对象。当一个方法或一个对象被synchronized关键…

    Java 2023年5月19日
    00
  • 浅谈Maven的build生命周期和常用plugin

    Maven是一个流行的Java项目管理工具,它可以自动化执行各种构建任务。Maven的构建生命周期由多个阶段组成,每个阶段都与一组目标相关联,而这些目标是通过插件实现的。 Maven Build生命周期 Maven的构建生命周期包括三个标准的build生命周期:clean、default和site。每个生命周期都由一系列阶段组成。 Clean生命周期 Cle…

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