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日

相关文章

  • springboot的四种启动方式

    下面是关于Spring Boot的四种启动方式的详细攻略: 1. 命令行启动方式 在命令行中直接输入”java -jar”命令启动Spring Boot应用。在执行该命令时需要指定Jar包路径,例如: java -jar springboot-demo.jar 如果应用需要指定参数,可以在命令行中传入。 2. Maven插件启动方式 使用Spring Boo…

    Java 2023年5月15日
    00
  • JAVA字符串格式化-String.format()的使用

    下面为您详细讲解”JAVA字符串格式化-String.format()的使用”的完整攻略。 什么是字符串格式化? 在开发过程中,有时候我们需要将不同的数据格式化为字符串,以便我们更好地输出到控制台或文件中。例如,我们需要将日期、时间、数字等各种类型的数据格式化为字符串,然后再进行输出,这时候要用到字符串格式化功能。 Java中的字符串格式化 Java中的字符…

    Java 2023年5月26日
    00
  • java 解决异常 2 字节的 UTF-8 序列的字节2 无效的问题

    如何解决“java 解决异常 2 字节的 UTF-8 序列的字节2 无效的问题”呢?以下是完整攻略: 问题背景 在使用Java处理文本或字符时,可能会遇到“2 字节的 UTF-8 序列的字节2 无效”的异常信息。这是由于UTF-8编码格式不符合规定所引起的问题。 解决方案 解决该问题的方法如下: 1. 检查编码格式是否正确 该异常通常是由于编码格式不正确所造…

    Java 2023年5月19日
    00
  • docker-compose一键部署java开源项目

    这一年干的很多事都是为了降低我的开源项目消息推送平台austin使用门槛。 如果想学Java项目的,强烈推荐我的开源项目消息推送平台Austin(8K stars) ,可以用作毕业设计,可以用作校招,可以看看生产环境是怎么推送消息的。开源项目消息推送平台austin仓库地址: 消息推送平台?推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉…

    Java 2023年4月25日
    00
  • JSP使用Servlet作为控制器实现MVC模式实例详解

    JSP使用Servlet作为控制器实现MVC模式实例详解 简介 MVC(Model-View-Controller)模式是一种常用于软件架构设计的模式,其目的是为了将应用程序分成不同的部分以便于设计和维护。其中,Model层负责处理应用程序的数据逻辑,View层负责渲染用户界面,Controller层负责控制应用程序流程和控制用户交互。 JSP(JavaSe…

    Java 2023年6月15日
    00
  • Win+Apache+PHP+MySQL+Tcomcat配置

    以下是关于Win+Apache+PHP+MySQL+Tomcat配置的完整攻略。 简介 该配置通常被称为Wamp或Mamp,是一种常用的Web开发环境配置解决方案。其中,Win代表Windows系统,Apache是一种流行的Web服务器软件,PHP是一种常用的服务器端脚本语言,MySQL则是一种开源的关系型数据库管理系统,Tomcat则是一种轻量级的Java…

    Java 2023年5月19日
    00
  • Java8中的lambda表达式入门教程

    Java8中的Lambda表达式入门教程 什么是Lambda表达式 Lambda表达式是Java8中的新特性,它可以让我们更为简洁地表示实现接口方法的代码块,同时还支持函数式编程。Lambda表达式的本质是一个函数式接口实例的声明。 例如,我们常见的匿名内部类写法: new Thread(new Runnable(){ @Override public vo…

    Java 2023年5月23日
    00
  • JDBC使用Statement修改数据库

    JDBC是Java Database Connectivity的简称,是Java专门用于访问数据库的标准API。它提供了一种标准的访问关系型数据库的方法,可以通过它访问MySQL、Oracle、SQL Server等数据库。Statement是JDBC中用于执行SQL语句的接口,包含了执行SQL查询、更新等操作的方法。 下面是使用Statement修改数据库…

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