java从远程url文件流读取文件并下载到本地

2023-11-14

 java从远程url文件流读取文件,且下载到本地,写个循环可实现批量

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
 
public class FileUtils {
    /**
     * 获取远程文件
     *
     * @param remoteFilePath 远程文件路径
     * @param localFilePath  本地文件路径
     */
    public static void downloadFile(String remoteFilePath, String localFilePath) {
        URL urlfile = null;
        HttpURLConnection httpUrl = null;
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
 
        File f = new File(localFilePath);
        try {
            urlfile = new URL(remoteFilePath);
            httpUrl = (HttpURLConnection) urlfile.openConnection();
            httpUrl.connect();
            bis = new BufferedInputStream(httpUrl.getInputStream());
            bos = new BufferedOutputStream(new FileOutputStream(f));
            int len = 2048;
            byte[] b = new byte[len];
            while ((len = bis.read(b)) != -1) {
                bos.write(b, 0, len);
            }
            bos.flush();
            bis.close();
            httpUrl.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                bis.close();
                bos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
 
 
}

具体的调用

//如果链接包含中文,需要转码
String resultWordPath = URLEncoderUtils.encode(wordPath);
 
String fileName = System.currentTimeMillis() + "";
String localPath = Constant.FILE_SAVE_PATH + "/doc/" + fileName + ".doc";
 
FileUtils.downloadFile(resultWordPath, localPath);

转码工具类

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
 
public class URLEncoderUtils {
    public static String encode(String url) {
        try {
            String resultURL = "";
            //遍历字符串
            for (int i = 0; i < url.length(); i++) {
                char charAt = url.charAt(i);
                //只对汉字处理
                if (isChineseChar(charAt)) {
                    String encode = URLEncoder.encode(charAt + "", "UTF-8");
                    resultURL += encode;
                } else {
                    resultURL += charAt;
                }
            }
            return resultURL;
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }
 
    //判断汉字的方法,只要编码在\u4e00到\u9fa5之间的都是汉字
    public static boolean isChineseChar(char c) {
        return String.valueOf(c).matches("[\u4e00-\u9fa5]");
    }
 
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java从远程url文件流读取文件并下载到本地 的相关文章

  • 说说SFINAE

    文章目录 SFINAE简介 SFINAE的一个例子 使用C 11进行代码简化 对于c 11代码的解说 大后天就是除夕了 牛年将过 虎年马上来了 以一篇关于C 的非常小众的文章作为牛年的结尾 若有讲的不清楚或讲错的地方欢迎大家留言指出来 为什
  • tcl加载tcom扩展包的一个实例

    函数名 readconfig 输入参数 无 返回参数 返回一个列表 proc readconfig package require tcom 创建com实例 set excel tcom ref createobj Excel Applic
  • 服务器启动显示message,DNS服务器中的message日志出现一些信息,看不懂,请大家帮我看看!!...

    DNS服务器中的message日志出现一些信息 看不懂 请大家帮我看看 2012 01 03 00 34 46 标签 服务器 信息 message 杂谈 DNS服务器中的message日志出现一些信息 看不懂 请大家帮我看看 主要是发现DN
  • flutter iOS 缺少通知权限,缺少位置权限

    App Store Connect 亲爱的开发者 我们发现了一个或多个问题与您的应用程序 hayya附近的朋友Chat Meet 1 0 3 1 最近的交付 您的交付是成功的 但您可能希望在您的下一次交付纠正以下问题 ITMS 90078
  • docker问题笔记--前端容器更新失败

    问题描述 情况是这样的 今天由于项目需要 更新了前端容器 但是重启之后发现还是旧的前端 一时间有点迷惑 我的更新方式是为了图省事 并没有用新的前端镜像去重新起一个容器 而是直接用dist文件夹内容替换前端容器中的frontend文件夹内容
  • 在vue项目中引入jssdk所遇到的各种问题

    由于在最近的项目中 需要用到扫一扫二维码签到的功能 在纯H5的页面中要实现这个是不太可能的 所以考虑用jssdk或者混合开发 由于没有微信公众号和混合开发的经验 混合开发不太现实 公司没有考虑这个 而jssdk有其他公众号平台的公司配合 所
  • 封装HashMap加入URLdecoder解码器,防注入

    其中URLDecoder decode有个好处 就是防止 sql注入 当然对其他字符无效了 当在input输入用户名时候 10001 经过后台先获取 并解码 会报错 package test import java io Unsupport

随机推荐

  • 51单片机矩阵键盘

    目录 前言 一 矩阵键盘扫描 二 LCD1602显示矩阵键盘键值 三 趣味小项目 密码锁 总结 前言 矩阵键盘的原理很浅显易懂 不涉及任何寄存器 就是纯线路连接 一 矩阵键盘扫描 矩阵键盘的内部接线图如下 不难看出其组成就是多个独立按键彼此
  • vue.js使用webpack发布,部署到服务器上之后如何在浏览器中查看到vue文件源码

    webpack vue 2 0打包发布之后 将发布的文件部署到服务器中之后 浏览器中访问的时候会出现一个webpack文件夹 里边会显示vue文件源码 如果想让vue源文件显示出来 可以在config index js 中 build 下的
  • 利用sqlmap进行post注入学习笔记

    了解sqlmap sqlmap是一款开源 功能强大的自动化SQL注入工具 支持Access MySQL Oracle SQL Server DB2等多种数据库 支持get post cookie注入 支持基于布尔的盲注 基于时间的盲注 错误
  • Mac上安装dlib的一堆坑

    Failed to build dlib ERROR Could not build wheels for dlib which is required to install pyproject toml based projects 主要
  • 指针笔试题(一)

    include
  • Tomcat启动报错Port 8080 required by Tomcat v9.0 Server at localhost is already in use. The server may al

    Port 8080 required by Tomcat v9 0 Server at localhost is already in use The server may already be running in another pro
  • VMware创建Linux虚拟机之(三)Hadoop安装与配置及搭建集群

    Hello world 本篇博客使用到的工具有 VMware16 Xftp7 若不熟悉操作命令 推荐使用带GUI页面的CentOS7虚拟机 我将使用带GUI页面的虚拟机演示 虚拟机 Virtual Machine 指通过软件模拟的具有完整硬
  • MyBatis 多对多 中间表插入数据

    在做这个员工管理系统demo的时候 由于user和role是多对多关系 且user主键是自增的 所有我们没办法提前知晓这个user id 所以插入的时候 就需要先插入user 然后再找到刚插入的id拿出来 再插入中间表user role 这
  • [913]MySQL查看数据库表容量大小

    查看一个数据中所有表的相关信息 1 可以在命令下使用show table status G命令查看 2 如果想知道MySQL数据库中每个表占用的空间 表记录的行数的话 可以打开MySQL的 information schema 数据库 在该
  • R语言实现的长转宽

    现在给大家介绍的数据处理技巧是长转宽 也就相当于Excel中的转置 不过用R语言实现的长转宽还有数据合并的功能 自然比Excel强大多了 这里给大家介绍4个函数 其中melt dcast 来自reshape2包 gather spread
  • stm32裸机开发下利用MultiTimer多任务时间片询

    stm32裸机开发下利用MultiTimer多任务时间片询 MultiTimerGithub地址 https github com 0x1abin MultiTimer 这是一个类似Arduino平台上的Ticker库 如需阅读懂源码 起码
  • 【Linux】管道

    管道命令 include
  • 云服务器1:云服务器能干什么

    云服务器1 云服务器能干什么 云服务器能干什么 服务器是啥 就是一个24小时不断电的电脑 有linux系统 windows2003 2013 你可以用他来挂qq 挂软件 挂一切你想挂的 除了游戏 因为他本身是用来为大家提供远程信息处理服务的
  • 微信小程序组件:多图上传

    由于在小程序开发过程中多次用到图片上传功能 在最近一次项目开发时 决定将其打包成组件来提高复用性 首先 在components文件夹下 新建Component 名称为 image uploader image uploader wxml
  • 创新管理 一

    每几天一篇 业界学习知识分享 请关注 如有同感请加vip阅读 创新的动力 创新无处不在 因为都在嘴 dk 创新动力是如果不做命运基本由时间决定 我们需要传递价值 服务 我们听过 微软离倒闭只有两年 只有偏执狂才能存活下来 而道之意 既是永远
  • Spring Cloud集成ELK完成日志收集实战(elasticsearch、logstash、kibana)

    简介 对于日志来说 最常见的需求就是收集 存储 查询 展示 开源社区正好有相对应的开源项目 logstash 收集 elasticsearch 存储 搜索 kibana 展示 我们将这三个组合起来的技术称之为ELK 所以说ELK指的是Ela
  • 深入浅出SQL(8)-使用Sequel pro 链接本地的mysql

    Authentication plugin caching sha2 password cannot be loaded 今天安装了Sequel pro 想连接本地的数据库 报了个错误 不能加载插件xxx 即对身份不能验证 打开偏好设置中S
  • Python破解wifi密码

    Python破解wifi密码 文章目录 Python破解wifi密码 1 下载破解字典口令集 2 引入密码本路径和WiFi名称 3 获取网卡信息并断开所有链接 4 连接验证 5 逐行读取文本内容并执行 6 破解开始 7 懒癌独家 1 下载破
  • vscode+php8+xdebug 无法安装composer

    1 下载composer 2 安装时出现提示 xdebug 的 远程服务无法连接 Xdebug Step Debug Time out connecting to debugging client waited 200 ms Tried l
  • java从远程url文件流读取文件并下载到本地

    java从远程url文件流读取文件 且下载到本地 写个循环可实现批量 import java io import java net HttpURLConnection import java net URL public class Fil