任何文件都可以转化成流直接操作,或者流再转化成该格式对应的类实例操作
public static void loadAllFromYaml(String yamlPath) throws Exception {
if (StringUtils.isEmpty(yamlPath)) {
return;
}
File yamlFile = new File(yamlPath);
if (!yamlFile.exists()) {
return;
}
if (!yamlFile.isFile()) {
return;
}
if (!yamlFile.canRead()) {
return;
}
Yaml yaml = new Yaml();
HashMap<String, Object> loads = yaml.loadAs(new BufferedReader(new FileReader(yamlFile)), HashMap.class);
if (!CollectionUtils.isEmpty(loads)) {
ObjectMapper mapper = new ObjectMapper();
for (String key : loads.keySet()) {
CustomDataSource customDataSource = mapper.convertValue(loads.get(key), CustomDataSource.class);
if (StringUtils.isEmpty(customDataSource.getName()) || StringUtils.isEmpty(customDataSource.getDriver())) {
throw new Exception("Load custom datasource error: name or driver cannot be EMPTY");
}
if ("null".equals(customDataSource.getName().trim().toLowerCase())) {
throw new Exception("Load custom datasource error: invalid name");
}
if ("null".equals(customDataSource.getDriver().trim().toLowerCase())) {
throw new Exception("Load custom datasource error: invalid driver");
}
if (StringUtils.isEmpty(customDataSource.getDesc())) {
customDataSource.setDesc(customDataSource.getName());
}
if ("null".equals(customDataSource.getDesc().trim().toLowerCase())) {
customDataSource.setDesc(customDataSource.getName());
}
if (!StringUtils.isEmpty(customDataSource.getKeyword_prefix()) || !StringUtils.isEmpty(customDataSource.getKeyword_suffix())) {
if (StringUtils.isEmpty(customDataSource.getKeyword_prefix()) || StringUtils.isEmpty(customDataSource.getKeyword_suffix())) {
throw new Exception("Load custom datasource error: keyword prefixes and suffixes must be configured in pairs.");
}
}
if (!StringUtils.isEmpty(customDataSource.getAlias_prefix()) || !StringUtils.isEmpty(customDataSource.getAlias_suffix())) {
if (StringUtils.isEmpty(customDataSource.getAlias_prefix()) || StringUtils.isEmpty(customDataSource.getAlias_suffix())) {
throw new Exception("Load custom datasource error: alias prefixes and suffixes must be configured in pairs.");
}
}
List<String> versoins = null;
if (dataSourceVersoin.containsKey(customDataSource.getName())) {
versoins = dataSourceVersoin.get(customDataSource.getName());
} else {
versoins = new ArrayList<>();
}
if (StringUtils.isEmpty(customDataSource.getVersion())) {
versoins.add(0, JDBC_DATASOURCE_DEFAULT_VERSION);
} else {
versoins.add(customDataSource.getVersion());
}
if (versoins.size() == 1 && versoins.get(0).equals(JDBC_DATASOURCE_DEFAULT_VERSION)) {
versoins.remove(0);
}
dataSourceVersoin.put(customDataSource.getName(), versoins);
customDataSourceMap.put(getKey(customDataSource.getName(), customDataSource.getVersion()), customDataSource);
}
}
}
相关推荐
在编程领域,文件流操作是数据输入输出的重要方式,尤其在C++、Java等语言中广泛应用。文件流允许程序员高效地读写文件,处理大量数据。本教程将深入讲解文件流的基本概念、操作方法以及其在实际编程中的应用。 1. ...
在C#编程语言中,文件流操作是处理输入/输出(I/O)操作的关键部分,尤其在Windows Forms(WinForm)应用程序中。文件流允许程序读取、写入或追加文件内容,支持多种数据格式,如文本、图像、音频等。下面我们将详细...
### 使用文件流操作文本文件的重要性及应用场景 在计算机科学领域,使用文件流操作文本文件是一项基本而关键的技术。本文将详细介绍文件流的概念及其在文本文件处理中的应用,并深入探讨掌握这项技能的重要性和实际...
在C#语言中,文件流操作使用FileStream类,需要在文件的开头加入一条导入语句:using System.IO;否则,FileStream类无法使用。 1、创建文件流 使用FileStream fs = new FileStream(path, FileMode.OpenOrCreate)...
在Java编程语言中,IO(Input/Output)文件流操作是处理数据输入和输出的核心机制。文件流允许程序与磁盘、网络、内存等不同存储介质进行数据交换。本篇文章将详细阐述IO文件流的基本概念、分类、常用类以及如何进行...
### 使用文件流操作文本文件 #### 一、引言 在现代软件开发中,文件操作是一项基础且重要的技能。无论是处理日志文件、配置文件还是简单的数据存储,掌握如何使用文件流来操作文本文件都是必不可少的。文件流提供...
在Java编程语言中,文件流操作是处理输入和输出数据的核心部分,特别是在处理文件时。以下是对标题"java文件流操作.docx"和描述中提到的知识点的详细说明: 1. **字节流(Byte Stream)**: Java中的`InputStream`...
在Java编程中,文件流操作是处理文件输入和输出的核心技术。文件流允许程序以高效且灵活的方式读写文件内容,无论是文本文件还是二进制文件。本篇文章将详细阐述Java中的文件流操作,包括字节流和字符流的使用。 ...
### C++ 文件流操作详解 在C++编程中,文件流操作是一项非常重要的技术,它允许程序员读写文件,从而实现数据的持久化存储。本文将深入探讨C++中的文件流操作,包括基本概念、常用类及方法,并通过具体示例进行说明...
文件流操作可能会遇到错误,如文件未找到、权限问题等。C++的文件流对象具有一个bool类型的成员eof(),当文件结束或出现错误时,它会返回true。同时,fail()和bad()方法可以检测更严重的错误,如数据损坏。 六、...
本文将深入探讨基于Swift 3.0的文件流操作库——"swift-一款基于Swift3.0的文件流操作库"。 文件流(File Stream)在计算机科学中是指一种处理文件的方式,它允许我们以顺序或随机访问的方式读取或写入文件内容。在...
本合集聚焦于WinForm程序设计,涵盖了几个关键的知识点:文件流操作、菜单栏设计、登录界面实现以及数据库连接。下面将逐一详细介绍这些主题。 1. **文件流操作**: 文件流是.NET Framework提供的一个基础功能,它...
文件流操作是通过`fstream`库实现的,其中包括`ifstream`(输入文件流)用于读取文件,`ofstream`(输出文件流)用于写入文件,以及`fstream`(双向文件流)用于同时读写。通过使用文件流,开发者可以方便地将数据...
### 使用Python进行文件流操作详解 #### 一、引言 在Python编程中,文件操作是一项非常基础且重要的技能。无论是处理数据、日志记录还是配置管理,掌握如何有效地使用文件流来读取和写入文件都是必不可少的能力。...
在这个实例中,我们将探讨四个关键概念:封装、继承、多态以及文件流操作,这些都是Java中的核心特性,也是理解OOP(面向对象编程)的基础。 首先,**封装**是面向对象编程的核心理念之一,它涉及将数据和方法捆绑...
在Java编程语言中,文件流操作是至关重要的一个部分,特别是在与操作系统进行数据交互时。微软Java文件流操作主要指的是如何使用Java的标准I/O库在Windows环境下读取、写入和处理文件。在这个"微软Java文件流操作....
**C++中的IO流与二进制文件流操作** C++是一种强大且灵活的编程语言,其中IO流(Input/Output Stream)系统是处理输入输出的重要组成部分。IO流允许程序与外部设备,如键盘、显示器、文件等进行数据交换。在C++中,...
### Java实践-使用文件流操作文本文件 #### 知识点概述 1. **文件流的概念**:在Java中,文件流是用来处理文件输入输出的基本工具。它支持数据的读取与写入,对于实现数据持久化和进行输入输出操作至关重要。 2. *...