springboot动态加载json文件

news/2024/5/7 3:31:18/文章来源:https://blog.csdn.net/qq_41482600/article/details/131247127

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.luyixian.cn/news_show_319330.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

threeJs着色器

一、着色器 着色器(Shaders )是一种使用GLSL(OpenGL Shading Language)编写并在GPU上运行的程序。它们被用于定位几何体的每个顶点,并为该几何体的每个可见像素着色。使用“像素Pixel”来描述其实并不准确,因为渲染的每个点不一定…

【工具使用】Gitee

怎么创建Gitee仓库 1. 进入Gitee官网 https://gitee.com/ 2. 没有账号先注册 https://gitee.com/signup?redirect_to_url%2F 3.创建仓库 参考操作页面 你的电脑上要安装git 4. 电脑安装Git 1. 进入git官网(官网下载方法-需要魔法工具) https://…

Java集合Collection接口中的方法的使用

add、clear、addAll、isEmpty、size() Testpublic void test1(){Collection coll new ArrayList();//add(Object e):将元素e添加到集合coll中coll.add("AA");coll.add("BB");coll.add(123);//自动装箱coll.add(new Date());//size():获取添加的元素的个数…

p7付费课程笔记:jvm基础知识、字节码、类加载器

编程语言 演化: 机器语言->编程语言->高级语言(java,c,Go,Rust等) 面向过程–面向对象-面向函数 java是一种面向对象、静态类型、编译执行,有VM(虚拟机)/GC和运行时、跨平台的高级语言…

【Leetcode60天带刷】day17二叉树——110.平衡二叉树 , 257. 二叉树的所有路径 ,404.左叶子之和

题目: 110. 平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root [3,9,20…

数据库系统概述——第四章 数据库安全性(知识点复习+练习题)

🌟博主:命运之光 🦄专栏:离散数学考前复习(知识点题) 🍓专栏:概率论期末速成(一套卷) 🐳专栏:数字电路考前复习 🦚专栏&am…

测量设备频宽范围选择要素—系统响应速度

系统响应速度是输入信号经过电压/电流驱动系统输出响应的幅值升到终值过程的斜率,而上升时间是系统响应速度的一种度量,上升时间越短,响应速度越快。 由一阶系统响应定义中,稳定的一阶系统上升时间 定义是响应从终值10%上升到终值…

手把手教你使用抖音DOU+创作个性化视频!

抖音DOU是抖音推出的一项全新功能,旨在为用户提供更加个性化、丰富多彩的内容创作和交流体验。DOU提供了一系列强大的创作工具,包括音频剪辑、特效滤镜、场景转换、字幕编辑等,让用户可以轻松地将自己的创意通过视频分享到抖音平台上来。下面…

selenium 要点击的元素被其他元素遮挡 or 无法找到非可视范围内的元素

selenium 无法找到非可视范围内的元素 org.openqa.selenium.StaleElementReferenceException: The element reference of is stale; either the element is no longer attached to the DOM, it is not in the current frame context, or the document has been refreshed se…

MySQL优化--索引创建原则,索引什么时候会失效

目录 索引创建原则 面试回答 索引什么时候会失效 面试回答 索引创建原则 1). 针对于数据量较大,且查询比较频繁的表建立索引。 2). 针对于常作为查询条件(where)、排序(order by)、分组(group by&…

Codesys高速计数应用(ST功能块)

Codesys如何创建FB请参看下面文章链接: CODESYS增量式PID功能块(ST完整源代码)_RXXW_Dor的博客-CSDN博客增量式PID的详细算法公式和博途源代码,请参看下面的文章链接:博途1200/1500PLC增量式PID算法(详细SCL代码)_博图scl语言pid增量编码器_RXXW_Dor的博客-CSDN博客。http…

进阶面向对象

面向对象的意义在于 将日常生活中习惯的思维方式引入程序设计中 将需求中的概念直观的映射到解决方案中 以模块为中心构建可复用的软件系统 提高软件产品的可维护性和可拓展性 类和对象是面向对象中的两个基本概念 类:指的是一类事务,是一个抽象的概…

Unity核心1——图片导入与图片设置

一、图片导入概述 ​ Unity 支持的图片格式有很多 BMP:是 Windows 操作系统的标准图像文件格式,特点是几乎不进行压缩,占磁盘空间大 TIF:基本不损失图片信息的图片格式,缺点是体积大 JPG:一般指 JPEG 格…

maven测试依赖的排除

1、概念 当 A 依赖 B,B 依赖 C 而且 C 可以传递到 A 的时候,A 不想要 C,需要在 A 里面把 C 排除掉。而往往这种情况都是为了避免 jar 包之间的冲突。 所以配置依赖的排除其实就是阻止某些 jar 包的传递。因为这样的 jar 包传递过来会和其他 …

青少年和成人错误监测神经源的多模态研究

导读 儿童和成人对目标导向行为的监控能力不同,这可以通过几种任务和技术来测量。此外,最近的研究表明,错误监测的个体差异在调节焦虑情绪的倾向方面具有重要作用,而且这种调节作用会随着年龄的增长而变化。本研究使用多模态方法…

【深度学习】4-3 误差反向传播法 - Affine/Softmax层的实现

Affine层 神经网络的正向传播中进行的矩阵的乘积运算(也就是Y np.dot(X, W) B)在几何学领域被称为“仿射变换”。因此,这里将进行仿射变换的处理实现为“Affine层”。 几何中,仿射变换包括一次线性变换和一次平移,分别对应神经网络的加权…

2023 最新版navicat 下载与安装 步骤及演示 (图示版)

2023 最新版navicat 下载与安装 步骤演示 -图示版 1. 下载Navicat2 .安装navicat 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请…

解读Linux常用命令使用方法

文章目录 1.前言1.1 定义1.2 特点 2.常用命令介绍2.1 ls2.2 pwd2.3 cd2.4 touch2.5 cat2.6 mkdir2.7 rm2.8 cp2.9 mv2.10 man(联机手册)2.11 vim2.12 grep2.13 ps2.14 netstat 1.前言 1.1 定义 Linux是一套免费使用和自由传播的类Unix操作系统&#xf…

C语言(14) 谈谈嵌入式 C 语言踩内存问题!

1 概述 C 语言内存问题,难在于定位,定位到了就好解决了。 这篇笔记我们来聊聊踩内存。踩内存,通过字面理解即可。本来是操作这一块内存,因为设计失误操作到了相邻内存,篡改了相邻内存的数据。 踩内存,轻则…

前端开发中遇到的小bug--解决方案

1.在 searchBox 搜索栏中,用到了多级下拉框的筛选条件,样式如下: 这样看起来是没什么问题的,但当我选择时,在框中显示的内容和筛选条件的内容就出错了: 这里其实是选择了 采矿业 -- 石油和天然气开采业 &am…