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库中,我们的项目一般都会引入这个库,所以可以很方便使用起来。

相关推荐
希忘auto1 小时前
详解Redis的常用命令
redis·1024程序员节
yaosheng_VALVE17 小时前
探究全金属硬密封蝶阀的奥秘-耀圣控制
运维·eclipse·自动化·pyqt·1024程序员节
dami_king17 小时前
SSH特性|组成|SSH是什么?
运维·ssh·1024程序员节
一个通信老学姐5 天前
专业125+总分400+南京理工大学818考研经验南理工电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
sheng12345678rui6 天前
mfc140.dll文件缺失的修复方法分享,全面分析mfc140.dll的几种解决方法
游戏·电脑·dll文件·dll修复工具·1024程序员节
huipeng9267 天前
第十章 类和对象(二)
java·开发语言·学习·1024程序员节
earthzhang20217 天前
《深入浅出HTTPS》读书笔记(19):密钥
开发语言·网络协议·算法·https·1024程序员节
爱吃生蚝的于勒8 天前
计算机基础 原码反码补码问题
经验分享·笔记·计算机网络·其他·1024程序员节
earthzhang20218 天前
《深入浅出HTTPS》读书笔记(20):口令和PEB算法
开发语言·网络协议·算法·https·1024程序员节
一个通信老学姐8 天前
专业140+总分410+浙江大学842信号系统与数字电路考研经验浙大电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节