Java追加式将内容写入yml文件

news2024/9/20 22:38:03

前言
最近需要使用java的jackson-dataformat-yaml写yml文件,但多数情况是在现有的文件内容中追加地写一部分新的内容。网上查了一下没有查到有直接追加的api,看源码偶然间找到了一个实现思路,记录一下。

追加写入到yml文件

使用的工具是jackson的一套:

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-yaml</artifactId>
            <version>${jackson.version}</version>
            <scope>compile</scope>
        </dependency>

需求是希望追加式地将内容写入到yml文件中,以提高写入的性能。

之前的实现

之前一直是直接将内容写入到文件里,如果之前文件有内容的话就只能覆盖掉。因此只能先将内容从文件中读出来,再将新内容加到读出来的内容里,最后一并写到文件里。这个操作一看就不是长久之计。

    public static boolean append2Yaml(List models, String ymlFile) {
        try {
            File file = new File(ymlFile);
            List configList;
            try (InputStream yamlStream = new FileInputStream(ymlFile)) {
                configList = mapper.readValue(yamlStream, List.class);
            } catch (IOException e) {
                LOGGER.error(e.getMessage(), e);
                return false;
            }

            configList.addAll(models);

            mapper.writeValue(file, configList);
        } catch (IOException e) {
            LOGGER.error("fail to write to model.yml", e);
            return false;
        }
        return true;
    }

追加实现

可以看到原来写入文件中使用的是writeValue()这个方法,传入的是于是File。点开重载方法看到了这个:
在这里插入图片描述看高亮的方法,入参是OutpuStream。于是想到了FileOutputStream可以追加写入内容。把方法改成这样就可以达到追加写内容的目的了:

	public static boolean append2Yaml(List models, String ymlFile) {
        File file = new File(ymlFile);
        // 这里使用一个FileOutputStream实现追加内容写入文件
        try (OutputStream outputStream = new FileOutputStream(file, true)) {
            mapper.writeValue(outputStream, models);
        } catch (IOException e) {
            LOGGER.error("fail to write to model yml", e);
            return false;
        }
        return true;
    }

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

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

相关文章

SAPRouter Certificate即将过期更新证书

今日收到SAP发的一封邮件提示SAPRouter Certificate即将过期&#xff0c;顺便记录下更新证书的方法步骤。 1、登录SAProuter服务器&#xff0c;用户使用安装SAProuter的用户&#xff0c;我的是saprter用户 进入到/saprouter目录&#xff0c;备份certreq cred_V2 local.pse src…

深度学习_13_YOLO_图片切片及维度复原

需求&#xff1a; 在对获取的图片进行识别的时候&#xff0c;如果想减少不必要因素的干扰&#xff0c;将图片切割只对有更多特征信息的部分带入模型识别&#xff0c;而剩余有较多干扰因素的部分舍弃&#xff0c;这就是图片切割的目的&#xff0c;但是又由于模型对图片的维度有较…

DNS服务器典型配置

文章目录 安装主程序bind和安全插件bind-root修改主配置文件/etc/named.conf正向解析 安装主程序bind和安全插件bind-root yum install bind-chroot修改主配置文件/etc/named.conf vim /etc/named.conf将listen-on和allow-query的ip或域名换成any 表示为服务器所有的IP地址启…

【数据处理】Python:实现求条件分布函数 | 求平均值方差和协方差 | 求函数函数期望值的函数 | 概率论

猛戳订阅&#xff01; &#x1f449; 《一起玩蛇》&#x1f40d; &#x1f4ad; 写在前面&#xff1a;本章我们将通过 Python 手动实现条件分布函数的计算&#xff0c;实现求平均值&#xff0c;方差和协方差函数&#xff0c;实现求函数期望值的函数。部署的测试代码放到文后了&…

C语言--五子棋项目【图文详解 经典】

今天小编带领大家学一学C语言入门必写的五子棋项目&#xff0c;题目非常经典&#xff0c;值得一学。 目录 一.目标效果 二.五子棋的元素 1.棋子 2.棋盘 三,需要准备的工具 四.具体内容 1.加载背景图片 2.画横线与竖线 3. 画小黑点 4.获取鼠标消息 5.画棋子 6.如何判断比…

【java学习—十五】创建多线程的两种方式(2)

文章目录 1. 多线程的创建和启动2. Thread 类3. 创建多线程的两种方式3.1.继承Thread类实现多线程3.1.1. 举例3.1.2. 举例2 3.2. 实现Runnable接口3.2.1. 举例13.2.2. 举例2 4. 继承方式和实现方式的联系与区别5. 使用多线程的优点 1. 多线程的创建和启动 Java 语言的 JVM 允许…

【差分演化算法相关文献总结】

差分演化算法相关文献总结 前言概述文献综述总结 前言 本人作为一名从事了三年演化算法研究的菜鸡研究生&#xff0c;其中大部分时间都在专注于差分演化算法&#xff08;Differential Evolution, DE&#xff09;的相关研究。现如今已经毕业&#xff0c;回顾往昔&#xff0c;经过…

跌破1940后金价直指1900 对黄金代理是好是坏?

受以鲍威尔为首的美联储官员近期讲话的影响&#xff0c;加上巴以冲突暂时出现降温&#xff0c;导致避险需求下降&#xff0c;在两大因素的影响之下&#xff0c;现货黄金行情在近期的大涨之后出现大跌。金价不光跌破1950关口&#xff0c;在跌穿1940后势头更是直指1900。金价在一…

虹科干货丨Lambda数据架构和Kappa数据架构——构建现代数据架构

文章来源&#xff1a;虹科云科技 虹科干货丨Lambda数据架构和Kappa数据架构——构建现代数据架构 如何更好地构建我们的数据处理架构&#xff0c;如何对IT系统中的遗留问题进行现代化改造并将其转变为现代数据架构&#xff1f;该怎么为你的需求匹配最适合的架构设计呢&#xf…

异常--Java

cry…catch使用 /*需求&#xff1a;测试除法器&#xff08;try...catch&#xff09;* 测试人&#xff1a;小王* 测试日期&#xff1a;2023/11/15* */ package yichang_test1;import java.util.InputMismatchException; import java.util.Scanner;public class TestException2 …

cadence virtuoso layout 无法跑DRC

问题&#xff1a;无法跑DRC could not establish connection with Calibre Interactiveon socket localhost 7000. 尝试&#xff1a; 点击一下红框右边的connect。 &#xff08;此法不一定有用&#xff0c;死马当活马医&#xff09;

Page分页records有数据,但是total=0,解决办法

Page分页records有数据&#xff0c;但是total0&#xff0c;解决办法 问题&#xff1a;程序运行起来后&#xff0c;后端接收前端传来的搜索请求信息正常&#xff0c;但无法在前端正确反馈信息&#xff0c;通过在后端排查发现total一直等于零&#xff0c;但数据库中有数据&#x…

大数据-之LibrA数据库系统告警处理(ALM-12046 网络写包丢包率超过阈值)

告警解释 系统每30秒周期性检测网络写包丢包率&#xff0c;并把实际丢包率和阈值&#xff08;系统默认阈值0.5%&#xff09;进行比较&#xff0c;当检测到网络写包丢包率连续多次&#xff08;默认值为5&#xff09;超过阈值时产生该告警。 用户可通过“系统设置 > 阈值配置…

OpenCV的应用——道路边缘检测

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉库&#xff0c;它提供了丰富的图像处理和计算机视觉算法&#xff0c;使得开发者可以便捷地进行图像处理、对象识别、图像分割等任务。道路边缘检测是计算机视觉中的重要应用之一&…

帝国CMS仿核弹头H5小游戏模板/帝国CMS内核仿游戏网整站源码

帝国CMS仿核弹头H5小游戏模板&#xff0c;帝国CMS内核仿游戏网整站源码。比较适合小游戏发布、APP应用资讯类网站使用&#xff0c;有兴趣的可以二次开发试试。 下载地址&#xff1a;https://bbs.csdn.net/topics/617579435

uniapp基础学习笔记01

文章目录 本博客根据黑马教程学习uniapp一、技术架构二、创建项目2.1 Hbuilder创建2.2 插件安装2.3 微信开发者工具配置与运行2.3.1 简单修改基础页面 2.4 pages.json和tabBar2.4.1 pages.json与tabBar配置2.4.2 案例 三、uniapp与原生开发的区别 本博客根据黑马教程学习uniapp…

C# Socket通信从入门到精通(10)——如何检测两台电脑之间的网络是否通畅

前言: 我们在完成了socket通信程序开发以后,并且IP地址也设置好以后,可以先通过一些手段来测试两台电脑之间的网络是否通畅,如果确认了网络通畅以后,我们再测试我们编写的Socket程序。 1、同时按下键盘的windows键+"R"键,如下图: 下面两张图是两种键盘的情…

参考意义大。4+巨噬细胞相关生信思路,简单易复现。

今天给同学们分享一篇生信文章“Angiogenesis regulators S100A4, SPARC and SPP1 correlate with macrophage infiltration and are prognostic biomarkers in colon and rectal cancers”&#xff0c;这篇文章发表在Front Oncol期刊上&#xff0c;影响因子为4.7。 结果解读&a…

【探索Linux】—— 强大的命令行工具 P.15(进程间通信 —— system V共享内存)

阅读导航 引言一、system V的概念二、共享内存(1) 概念(2) 共享内存示意图(3) 共享内存数据结构 三、共享内存的使用1. 共享内存的使用步骤&#xff08;1&#xff09;包含头文件&#xff08;2&#xff09;获取键值&#xff08;ftok函数&#xff09;&#xff08;3&#xff09;创…

LeetCode - 142. 环形链表 II (C语言,快慢指针,配图)

如果你对快慢指针&#xff0c;环形链表有疑问&#xff0c;可以参考下面这篇文章&#xff0c;了解什么是环形链表后&#xff0c;再做这道题会非常简单&#xff0c;也更容易理解下面的图片公式等。 LeetCode - 141. 环形链表 &#xff08;C语言&#xff0c;快慢指针&#xff0c;…