java通过IO流下载保存文件

我们在开发过程中,可能会遇到需要到远程服务器上下载文件的需求,一般我们的文件可能会有一个url地址,我们拿到这个地址,可以构建URLConnection对象,之后可以根据这个URLConnection来获取InputStream,之后,就可以进行读取并保存文件到本地。

如下所示是一个简单的读取url文件地址,并下载文件到本地conf目录的示例:

java 复制代码
package com.xxx.io;
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.nio.file.Files;
public class URLFileCopy {

    private static final String URL_FILE = "http://localhost:8000/lion.jpg";
    public static void main(String[] args) {
        try (OutputStream outputStream = Files.newOutputStream(new File("conf/test.jpg").toPath())) {
            URL url = new URL(URL_FILE);
            URLConnection connection = url.openConnection();
            IOUtils.copy(connection.getInputStream(), outputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

这段代码,读取http://localhost:8000/lion.jpg ,并把文件存为本地conf/test.jpg。运行动态截图:

conf目录开始没有test.jpg文件,运行程序,生成了test.jpg。这里对保存的文件进行了修改名称,在实际中,我们可能需要保留原始的文件名,这里只是测试保存这个动作。这里没有通过构建复杂的io流来先读取,然后写入文件,这里调用了IOUtils.copy()这个方法,这个工具类在commons-io库中,我们的项目一般都会引入这个库,所以可以很方便使用起来。

相关推荐
小坏讲微服务19 小时前
MaxWell中基本使用原理 完整使用 (第一章)
大数据·数据库·hadoop·sqoop·1024程序员节·maxwell
liu****1 天前
18.HTTP协议(一)
linux·网络·网络协议·http·udp·1024程序员节
洛_尘1 天前
JAVA EE初阶 6: 网络编程套接字
网络·1024程序员节
2301_800256112 天前
关系数据库小测练习笔记(1)
1024程序员节
金融小师妹2 天前
基于多源政策信号解析与量化因子的“12月降息预期降温”重构及黄金敏感性分析
人工智能·深度学习·1024程序员节
GIS数据转换器2 天前
基于GIS的智慧旅游调度指挥平台
运维·人工智能·物联网·无人机·旅游·1024程序员节
南方的狮子先生3 天前
【C++】C++文件读写
java·开发语言·数据结构·c++·算法·1024程序员节
闲人编程3 天前
构建一个基于Flask的URL书签管理工具
后端·python·flask·url·codecapsule·书签管理
Neil今天也要学习3 天前
永磁同步电机无速度算法--基于三阶LESO的反电动势观测器
算法·1024程序员节
开开心心_Every4 天前
专业视频修复软件,简单操作效果好
学习·elasticsearch·pdf·excel·音视频·memcache·1024程序员节