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

相关推荐
unable code2 小时前
CTF-SPCS-Forensics
网络安全·ctf·misc·1024程序员节·取证
unable code1 天前
内存取证-卡比卡比卡比
网络安全·ctf·misc·1024程序员节·内存取证
学传打活1 天前
【边打字.边学昆仑正义文化】_3_宇宙人类演化史(2)
微信公众平台·1024程序员节·汉字·昆伦正义文化
unable code2 天前
内存取证-Stager
网络安全·ctf·misc·1024程序员节·内存取证
开开心心就好3 天前
轻松加密文件生成exe,无需原程序解密
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
unable code3 天前
内存取证-easy_mem_3
网络安全·ctf·misc·1024程序员节·内存取证
开开心心就好3 天前
高效U盘容量检测工具,一键辨真假,防假货
linux·运维·服务器·线性代数·安全·抽象代数·1024程序员节
unable code3 天前
内存取证-easy_mem_2
网络安全·ctf·misc·1024程序员节·内存取证
unable code3 天前
内存取证-easy_mem_1
网络安全·ctf·misc·1024程序员节·内存取证
开开心心就好9 天前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节