读取 yaml 文件

一、引入依赖

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.32</version>
</dependency>

二、读取yaml内容工作代码

(1)上传yaml文件

读取yaml文件并校验

package com.util;

import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.parser.ParserException;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Map;


@Slf4j
public class YmlTransUtil {

    /**
     * 读取并校验语法 yaml
     *
     * @param file 需要读取的文件
     * @return Map
     */
    public static Map getReadAbleYaml(File file) {
        Map obj = new HashMap();
        try (FileInputStream ins = new FileInputStream(file)) {
            Yaml yaml = new Yaml();
            obj = yaml.load(ins);
        } catch (FileNotFoundException exception) {
            log.error("yaml文件不存在", exception);
            obj.put("error", "yaml文件不存在");
        } catch (ParserException exception) {
            log.error("yaml文件格式错误!", exception);
            obj.put("error", "yaml文件格式错误!\n" + exception.getMessage());
        } catch (Exception exception) {
            log.error("getReadAbleYaml error: ", exception);
        }
        return obj;
    }
}

(2) 根据yaml文件路径

src.resource 下的yaml文件

package com.utils;

import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.io.Resources;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.parser.ParserException;

import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

@Slf4j
public class YamlUtil {

    /**
     * 读取 ymal
     *
     * @param path 需要读取的文件路径
     * @return Map
     */
    public static Map getReadAbleYaml(String path) {
        Map obj = new HashMap();
        try( InputStream ins = Resources.getResourceAsStream(path)) {
            Yaml yaml = new Yaml();
            obj = yaml.load(ins);
        } catch (FileNotFoundException exception){
            log.error("yaml文件不存在");
            obj.put("error", "yaml文件不存在");
        }  catch (ParserException exception){
            log.error("yaml文件格式错误!");
            log.error(exception.getMessage());
            obj.put("error", "yaml文件格式错误!\n" + exception.getMessage());
        }  catch (Exception exception) {
            log.error(exception.getMessage());
        }
        return obj;
    }
}

三、应用代码

(1)上传yaml文件

java

@RequestMapping(value = "/getYamlInfo", method = RequestMethod.POST)
    public RestResponse getYamlInfo(@RequestParam(value = "file") MultipartFile file) {
        RestResponse restResponse = new RestResponse();
        if (file == null) {
            log.info("getYamlInfo error: file is not empty.");
            return RestResponse.setErrorResponse(restResponse, "getYamlInfo error: file is not empty.");
        }
        try {
            // 校验合法性
            File newFile = File.createTempFile("temp", ".yml");
            file.transferTo(newFile);
            Map properties = YmlTransUtil.getReadAbleYaml(newFile);
            if (properties.get("error") != null) {
                return RestResponse.setErrorResponse(restResponse, properties.get("error").toString());
            }
        } catch (Exception exception) {
            log.error("getYamlInfo error.", exception);
            return RestResponse.setErrorResponse(restResponse, "getYamlInfo error.");
        }
        return restResponse;
    }

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值