springboot动态加载json文件

news2024/12/26 23:28:15

resources下面的配置文件,application文件修改启动会实时加载新的内容

其他的文件属于静态文件,打包后会把文件打入jar里面,修改静态文件启动不会加载新的内容

Resource areacode = nre FileSystemResource("config" + File.separator + "areacode.json");
InputStream inputStream = areacode.getInputStream();

1、InputStream转化为String

1.1 JDK原生提供

方法一:

byte[] bytes = new byte[0];
bytes = new byte[inputStream.available()];
inputStream.read(bytes);
String str = new String(bytes);

 方法二:

String result = new BufferedReader(new InputStreamReader(inputStream))
        .lines().collect(Collectors.joining(System.lineSeparator()));

 方法三:

String result = new BufferedReader(new InputStreamReader(inputStream))
       .lines().parallel().collect(Collectors.joining(System.lineSeparator()));

方法四:

Scanner s = new Scanner(inputStream).useDelimiter("\\A");
String str = s.hasNext() ? s.next() : "";

方法五: 

String resource = new Scanner(inputStream).useDelimiter("\\Z").next();
return resource;

方法六:

StringBuilder sb = new StringBuilder();
String line;

BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
while ((line = br.readLine()) != null) {
    sb.append(line);
}
String str = sb.toString();
return str;

方法七:

ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
    result.write(buffer, 0, length);
}
String str = result.toString(StandardCharsets.UTF_8.name());
return str;

方法八:

BufferedInputStream bis = new BufferedInputStream(inputStream);
ByteArrayOutputStream buf = new ByteArrayOutputStream();
int result = bis.read();
while(result != -1) {
    buf.write((byte) result);
    result = bis.read();
}
String str = buf.toString();
return str;

1.2 Apache Common提供

方法九:

StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, StandardCharsets.UTF_8.name());
String str = writer.toString();

方法十:

String str = IOUtils.toString(inputStream, "utf-8");

1.3 Google Guava提供

方法十一:

String str = CharStreams.toString(new InputStreamReader(inputStream, StandardCharsets.UTF_8));

方法十二:

String str = new String(ByteStreams.toByteArray(inputStream));

针对一个2MB的文件的输入流,多次执行测试如下(单位是毫秒):

方法十: 111
方法十一: 236
方法十二: 36
方法一: 36
方法二: 87
方法三: 66
方法四: 101
方法五: 178
方法六: 40
方法七: 21
方法八: 107
方法九: 31

从上述结果来看,方法七和方法九更好一些,而方法五和方法十一会更差一些。

2、String转化为InputStream

2.1 JDK原生提供

InputStream is = new ByteArrayInputStream(str.getBytes());

2.2 Apache Common提供

InputStream targetStream = IOUtils.toInputStream(str, StandardCharsets.UTF_8.name());

2.3 Google Guava提供

InputStream targetStream =
        new ReaderInputStream(CharSource.wrap(str).openStream(), StandardCharsets.UTF_8.name());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/653933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

技术分享——数据安全之数据分类方法小集

背景 2021年6月10日,《中华人民共和国数据安全法》(以下简称“《数安法》”)通过了第十三届全国人民代表大会常务委员会第二十九次会议并予以发布,标志着我国数据安全工作进入到有法可依的新阶段。 本文通过梳理现有的部分法规、…

Fiddler Orchestra从安装到实战演练

上次谈到了Fiddler Orchestra用户指南,这次笔者把自己的实战演练分享大家,闲话少说,步骤如下: 1、根据前面文章《Fiddler Orchestra用户指南》,Fiddler Orchestra客户端和控制器只能运行在至少支持.NET Standard 2.0的…

Redis入门(一)

第1章 NoSQL 1.1 NoSQL数据库 1.1.1 NoSQL是什么 (1)NoSQL(Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 (2)NoSQL不拘泥于关系型数据库的设计范式,放弃了通用的技术标准&…

MyAQL事务

目录 ----------------------MySQL 事务-------------------------------- 1.事务的概念 2.事务的ACID特点 ●原子性 ●一致性 ●隔离性 事务隔离级别的作用范围分为两种: ●持久性 3.事务控制语句 案例: 4…

【Elacticsearch】 倒排索引的查增删改原理

关联文章:【Elacticsearch】 原理/数据结构/面试经典问题整理_东方鲤鱼的博客-CSDN博客 建立索引的原理 当向协调节点发送请求以索引新文档时,将执行以下操作: 所有在Elasticsearch集群中的节点都包含:有关哪个分片存在于哪个节点…

深度学习入门笔记1--梯度下降之--为什么是负方向--为什么局部下降最快的是负梯度方向

本节目标理解梯度下降的原理,主要围绕以下几个问题展开: 梯度下降法的用途?什么是梯度?为什么是负的梯度为什么局部下降最快的方向就是梯度的负方向。 需要的知识储备:一级泰勒展开公式 向量内积计算公式 1. 梯度下…

Sui主网升级至V1.3.0版本

Sui主网现已升级至V1.3.0版本,升级要点如下所示: 将协议版本更新至12 开始在Narwhal中使用BatchV2,新增VersionedMetadata允许更精细的追踪Narwhal批处理延迟。有关详细信息,请参阅#12178和#12290。 将协议版本更新至13 弃用0…

wtmp日志读取

wtmp日志介绍 之前遇到一个AIX服务器登录不上,但是能ping通的事情。一开始我怀疑是sshd服务坏掉了,但是使用telnet也无法登录。好在这台机器所在的机房就在我隔壁,于是外接显示器,直接上机操作。好在直接通过物理介质还是能登录得…

全球企业KVM贡献榜公布,腾讯云再添1项核心突破

6月14日,在全球虚拟化顶级技术峰会 KVM Forum 上,2023年度全球企业 KVM 开源贡献榜正式发布。腾讯云成为中国唯一连续七年入围的云厂商。 作为云计算的关键底层技术,云厂商需要利用KVM对物理机进行虚拟化,提供云端的池化算力。作为…

如何「假装」自己做过性能测试?

简历: 熟练掌握后端性能、压力测试 面试官: 你们是怎么做性能测试的? 我: 主要是对后端服务模块进行性能测试,我们上一个项目是是一个群聊项目,类似于QQ群,大家可以在一个群里聊天&#xf…

视觉SLAM十四讲——ch10实践(后端2)

视觉SLAM十四讲——ch10的实践操作及避坑 0. 实践前小知识介绍1. 实践操作前的准备工作2. 实践过程2.1 g2o原生位姿图2.2 李代数上的位姿图优化 3. 遇到的问题及解决办法3.1 在运行pose_graph_g2o_lie时出现错误 0. 实践前小知识介绍 视觉SLAM(Simultaneous Locali…

基于Java菜匣子优选系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

粒子群算法(Particle Swarm Optimization(PSO)附简单案例及详细matlab源码)

作者:非妃是公主 专栏:《智能优化算法》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录 专栏推荐序一、概论二、粒子群算法原理…

【复杂网络建模】——使用PyTorch和DGL库实现图神经网络进行链路预测

🤵‍♂️ 个人主页:Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 &#x1f4a…

当老板问:软件质量怎么样,能上线发布吗?阁下该如何应对

说在前面 每当你和团队完成了一款软件产品的开发,是否很容易被问到这样一个问题:质量怎么样?或者是能上线发布吗?如果你是团队的负责人,你会如何回答这样的问题呢?对软件质量的评判标准,不见得…

【Airtest】UI自动化测试的数据分离实践

目录 前言 1. 示例介绍 2. 读取Excel单元格里的数据 1)安装 xlrd 第三方库 2)读取表格数据存储到列表中 3)封装成读取控件信息的函数 3. 处理控件信息并实现控件操作 小结 前言 在UI自动化测试中,测试数据的管理和组织是…

Spring-Retry(重试机制)

Spring-Retry(重试机制) 在实际工作中,重处理是一个非常常见的场景,比如: 发送消息失败。 调用远程服务失败。 争抢锁失败。 这些错误可能是因为网络波动造成的,等待过后重处理就能成功。通常来说,会用try…

Redis入门 - 5种基本数据类型

原文首更地址,阅读效果更佳! Redis入门 - 5种基本数据类型 | CoderMast编程桅杆https://www.codermast.com/database/redis/five-base-datatype.html 说明 在我们平常的业务中基本只会使用到Redis的基本数据类型(String、List、Hash、Set、…

重新学树结构

树 图一 图二 相关术语 前驱:某结点上一层结点,图中H结点的前驱结点是F后继:某结点紧跟的后面的结点,图中F结点的后继是G、H、I三个结点根结点:非空树没有前驱结点的结点,图中的R结点结点的度&#x…

019+limou+C语言预处理

0.前言 您好,这里是limou3434的一篇博客,感兴趣您可以看看我的其他博文系列。本次我主要给您带来了C语言有关预处理的知识。 1.宏的深度理解与使用 1.1.数值宏常量 #define PI 3.1415926注意define和#之间是可以留有空格的 1.2.字符宏常量 #includ…