Java 从网上下载文件的几种方式实例代码详解

Java 从网上下载文件的几种方式实例代码详解

在Java编程中,有时候需要从网上下载文件,比如下载图片、音频、视频等资源文件。本文将详细讲解Java 从网上下载文件的几种方式,希望可以帮助大家实现这个需求。

1.使用URL类下载文件

使用URL类可以轻松地实现从网上下载文件。实现的过程如下:

public static void downloadFile(String urlString, String savePath) throws IOException {
    URL url = new URL(urlString);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");
    conn.setConnectTimeout(5000);
    InputStream inputStream = conn.getInputStream();
    byte[] getData = readInputStream(inputStream);

    File file = new File(savePath);
    FileOutputStream fileOutputStream = new FileOutputStream(file);
    fileOutputStream.write(getData);
    fileOutputStream.close();
    inputStream.close();
}

private static byte[] readInputStream(InputStream inputStream) throws IOException {
    byte[] buffer = new byte[1024];
    int len;
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    while ((len = inputStream.read(buffer)) != -1) {
        byteArrayOutputStream.write(buffer, 0, len);
    }
    byteArrayOutputStream.close();
    return byteArrayOutputStream.toByteArray();
}

其中,downloadFile函数用于下载文件,输入参数有urlString和savePath,分别表示下载的资源文件URL和本地存储路径。

2.使用Apache的HttpClient类下载文件

另一种从网上下载文件的方式是使用Apache的HttpClient类。具体实现过程如下:

public static void downloadFile(String urlString, String savePath) throws IOException {
    CloseableHttpClient client = HttpClients.createDefault();
    HttpGet httpGet = new HttpGet(urlString);
    CloseableHttpResponse response = client.execute(httpGet);

    HttpEntity entity = response.getEntity();
    InputStream inputStream = entity.getContent();
    byte[] getData = readInputStream(inputStream);

    File file = new File(savePath);
    FileOutputStream fileOutputStream = new FileOutputStream(file);
    fileOutputStream.write(getData);
    fileOutputStream.close();

    entity.getContent().close();
    response.close();
}

private static byte[] readInputStream(InputStream inputStream) throws IOException {
    byte[] buffer = new byte[1024];
    int len;
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    while ((len = inputStream.read(buffer)) != -1) {
        byteArrayOutputStream.write(buffer, 0, len);
    }
    byteArrayOutputStream.close();
    return byteArrayOutputStream.toByteArray();
}

HttpClient需要引入以下两个依赖:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.3</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.6</version>
</dependency>

示例

假设我们需要从百度首页下载百度logo。那么可以使用以下代码:

String url = "https://www.baidu.com/img/baidu_jgylogo3.gif";
String savePath = "/Users/work/desktop/baidu_jgylogo3.gif";

// 使用URL类下载文件
DownloadUtil.downloadFile(url, savePath);

// 使用HttpClient下载文件
DownloadUtil.downloadFile(url, savePath);

在实际编程中,我们只需要根据实际需求替换url和savePath参数即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 从网上下载文件的几种方式实例代码详解 - Python技术站

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

相关文章

  • Java字符串去除特殊字符内容的实例

    下面是Java字符串去除特殊字符内容的实例的完整攻略。 1. 确定需要去除的特殊字符 在进行字符串的特殊字符去除操作之前,需要先确定需要去除的特殊字符。常见的特殊字符有空格、制表符、换行符等。可以使用Java字符串的正则表达式进行匹配。 2. 使用replaceAll方法进行特殊字符去除 Java的字符串类中提供了replaceAll方法,可以使用正则表达式…

    Java 2023年5月27日
    00
  • Java实现UTF-8编码与解码方式

    我会为你详细讲解如何用Java实现UTF-8编码与解码。首先,让我们了解一下UTF-8编码的相关知识。 UTF-8是一种可变长度的Unicode编码,它能够表示Unicode标准中的任何字符。UTF-8编码使用1到4个字节来表示每个字符,其中ASCII字符只需要使用1个字节。 在Java中,可以使用java.nio.charset.Charset类来支持UT…

    Java 2023年5月20日
    00
  • 修改Tomcat默认访问根目录的方法

    当我们访问Tomcat服务器时,它默认会加载webapps目录下的ROOT应用程序。但是,有时我们想在不改变应用程序名称的情况下将默认访问目录更改为不同的目录。接下来,我将向您介绍如何在Tomcat服务器中修改默认访问目录的方法。 步骤一:定位server.xml文件 Tomcat服务器的配置文件位于Tomcat安装目录下的conf目录中。在此目录中,我们可…

    Java 2023年5月19日
    00
  • 用bat批处理实现163邮箱自动登陆的代码[已测]

    使用bat批处理实现网页自动化是一种高效的实现方式。下面是使用bat批处理实现163邮箱自动登陆的完整攻略及示例说明: 1. 准备工作 首先,需要在电脑上安装好以下两个工具: 安装好Chrome浏览器 安装好Chrome浏览器的Driver 其中,Chrome浏览器的Driver需要根据自己安装的Chrome版本来选择,可以在 https://npm.tao…

    Java 2023年6月16日
    00
  • Spring MVC项目开发踩过的一些bug

    下面是详细的攻略: Spring MVC项目开发踩过的一些bug 1. 关于jsp页面中的EL表达式 在jsp页面中使用EL表达式时,在表达式中不要包含两对#{和},如果要包含两对,则需要使用反斜线进行转义。例如:在表单中使用<input type=”text” name=”username” value=”${user.name}”>,表示把u…

    Java 2023年6月15日
    00
  • Java 数据结构与算法系列精讲之数组

    Java 数据结构与算法系列精讲之数组 数组的定义和基本操作 数组是一种线性数据结构,它由一系列相同类型的元素组成,这些元素在内存中连续存储。 定义 在Java中定义数组需要指定数据类型和数组长度,例如: int[] arr = new int[10]; // 定义一个长度为10的整型数组 基本操作 数组的基本操作包括了以下几个方面: 初始化:默认初始化为类…

    Java 2023年5月19日
    00
  • 内存溢出的原因是什么?

    内存溢出是指当程序在执行过程中需要申请更多的内存,但可用内存已经全部被占用时,程序便无法再申请到更多的内存,导致程序崩溃或异常退出。内存溢出的原因主要有以下几点: 内存泄漏:当程序申请内存后,由于某种原因导致程序在使用完内存后没有及时释放,这部分内存就会被占用并且一直保留着,导致内存空间被占满,从而引起内存泄漏。 示例一: public class Memo…

    Java 2023年5月10日
    00
  • Android开发学习笔记之通过API接口将LaTex数学函数表达式转化为图片形式

    下面详细讲解“Android开发学习笔记之通过API接口将LaTex数学函数表达式转化为图片形式”的完整攻略。 1. 准备工作 在进行LaTex数学函数表达式转化成图片的操作前,我们需要安装一个开源工具库,名称为MathJax。MathJax是一个JavaScript引擎,可以将LaTex数学表达式转化为HTML、SVG和MathML。 其次,我们需要一个H…

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