• 读取 yaml 文件


    一、引入依赖

    1. org.yaml
    2. snakeyaml
    3. 1.32

    二、读取yaml内容工作代码

    (1)上传yaml文件

    读取yaml文件并校验

    1. package com.util;
    2. import com.alibaba.fastjson.JSONObject;
    3. import lombok.extern.slf4j.Slf4j;
    4. import org.yaml.snakeyaml.Yaml;
    5. import org.yaml.snakeyaml.parser.ParserException;
    6. import java.io.File;
    7. import java.io.FileInputStream;
    8. import java.io.FileNotFoundException;
    9. import java.util.HashMap;
    10. import java.util.Map;
    11. @Slf4j
    12. public class YmlTransUtil {
    13. /**
    14. * 读取并校验语法 yaml
    15. *
    16. * @param file 需要读取的文件
    17. * @return Map
    18. */
    19. public static Map getReadAbleYaml(File file) {
    20. Map obj = new HashMap();
    21. try (FileInputStream ins = new FileInputStream(file)) {
    22. Yaml yaml = new Yaml();
    23. obj = yaml.load(ins);
    24. } catch (FileNotFoundException exception) {
    25. log.error("yaml文件不存在", exception);
    26. obj.put("error", "yaml文件不存在");
    27. } catch (ParserException exception) {
    28. log.error("yaml文件格式错误!", exception);
    29. obj.put("error", "yaml文件格式错误!\n" + exception.getMessage());
    30. } catch (Exception exception) {
    31. log.error("getReadAbleYaml error: ", exception);
    32. }
    33. return obj;
    34. }
    35. }

    (2) 根据yaml文件路径

    src.resource 下的yaml文件

    1. package com.utils;
    2. import lombok.extern.slf4j.Slf4j;
    3. import org.apache.ibatis.io.Resources;
    4. import org.yaml.snakeyaml.Yaml;
    5. import org.yaml.snakeyaml.parser.ParserException;
    6. import java.io.FileNotFoundException;
    7. import java.io.InputStream;
    8. import java.util.HashMap;
    9. import java.util.Map;
    10. @Slf4j
    11. public class YamlUtil {
    12. /**
    13. * 读取 ymal
    14. *
    15. * @param path 需要读取的文件路径
    16. * @return Map
    17. */
    18. public static Map getReadAbleYaml(String path) {
    19. Map obj = new HashMap();
    20. try( InputStream ins = Resources.getResourceAsStream(path)) {
    21. Yaml yaml = new Yaml();
    22. obj = yaml.load(ins);
    23. } catch (FileNotFoundException exception){
    24. log.error("yaml文件不存在");
    25. obj.put("error", "yaml文件不存在");
    26. } catch (ParserException exception){
    27. log.error("yaml文件格式错误!");
    28. log.error(exception.getMessage());
    29. obj.put("error", "yaml文件格式错误!\n" + exception.getMessage());
    30. } catch (Exception exception) {
    31. log.error(exception.getMessage());
    32. }
    33. return obj;
    34. }
    35. }

    三、应用代码

    (1)上传yaml文件

    java

    1. @RequestMapping(value = "/getYamlInfo", method = RequestMethod.POST)
    2. public RestResponse getYamlInfo(@RequestParam(value = "file") MultipartFile file) {
    3. RestResponse restResponse = new RestResponse();
    4. if (file == null) {
    5. log.info("getYamlInfo error: file is not empty.");
    6. return RestResponse.setErrorResponse(restResponse, "getYamlInfo error: file is not empty.");
    7. }
    8. try {
    9. // 校验合法性
    10. File newFile = File.createTempFile("temp", ".yml");
    11. file.transferTo(newFile);
    12. Map properties = YmlTransUtil.getReadAbleYaml(newFile);
    13. if (properties.get("error") != null) {
    14. return RestResponse.setErrorResponse(restResponse, properties.get("error").toString());
    15. }
    16. } catch (Exception exception) {
    17. log.error("getYamlInfo error.", exception);
    18. return RestResponse.setErrorResponse(restResponse, "getYamlInfo error.");
    19. }
    20. return restResponse;
    21. }

    (2)读取项目src.resource下的yaml

    Map properties = YamlUtil.getReadAbleYaml("text.yml");

  • 相关阅读:
    “新燕窝”时代,黑历史与生命力共存的燕窝经济
    淘宝/天猫电商平台获取商品数据按关键字搜索淘宝商品|优惠价|销量|价格|商品推荐案例
    docker部署最新版nacos(2.2.3)设置登录密码
    珂朵莉树/ODT 学习笔记
    ASP.NET Core使用filter和redis实现接口防重
    【Python爬虫实战】 不生产小说,只做网站的搬运工,太牛逼了~(附源码)
    视觉系统设计实例halcon-winform-11.菜单折叠与展示
    Vue2+ElementUI 静态首页案例
    python+vue+elementui固定资产管理系统django mysql
    100天精通Golang(基础入门篇)——第21天:Go语言面向对象(OOP)核心概念解析
  • 原文地址:https://blog.csdn.net/NIki_ya/article/details/133707460