Code片段 : .properties属性文件操作工具类 JSON工具类
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “贵专” — 泥瓦匠
一、java.util.Properties API & 案例
java.util.Properties 是一个属性集合。常见的api有如下:
- load(InputStream inStream) 从输入流中读取属性
- getProperty(String key) 根据key,获取属性值
- getOrDefault(Object key, V defaultValue) 根据key对象,获取属性值需要强转
首先在resources目录下增加/main/resources/fast.properties:
fast.framework.name=fast fast.framework.author=bysocket fast.framework.age=1
然后直接上代码PropertyUtil.java:
/*** .properties属性文件操作工具类** Created by bysocket on 16/7/19.*/
public class PropertyUtil {private static final Logger LOGGER = LoggerFactory.getLogger(PropertyUtil.class);/** .properties属性文件名后缀 */public static final String PROPERTY_FILE_SUFFIX = ".properties";/*** 根据属性文件名,获取属性** @param propsFileName* @return*/public static Properties getProperties(String propsFileName) {if (StringUtils.isEmpty(propsFileName))throw new IllegalArgumentException();Properties properties = new Properties();InputStream inputStream = null;try {try {/** 加入文件名后缀 */if (propsFileName.lastIndexOf(PROPERTY_FILE_SUFFIX) == -1) {propsFileName += PROPERTY_FILE_SUFFIX;}inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(propsFileName);if (null != inputStream)properties.load(inputStream);} finally {if ( null != inputStream) {inputStream.close();}}} catch (IOException e) {LOGGER.error("加载属性文件出错!",e);throw new RuntimeException(e);}return properties;}/*** 根据key,获取属性值** @param properties* @param key* @return*/public static String getString(Properties properties, String key){return properties.getProperty(key);}/*** 根据key,获取属性值** @param properties* @param key* @param defaultValue* @return*/public static String getStringOrDefault(Properties properties, String key, String defaultValue){return properties.getProperty(key,defaultValue);}/*** 根据key,获取属性值** @param properties* @param key* @param defaultValue* @param <V>* @return*/public static <V> V getOrDefault(Properties properties, String key, V defaultValue){return (V) properties.getOrDefault(key,defaultValue);}
}
UT如下:
/*** {@link PropertyUtil} 测试用例* <p/>* Created by bysocket on 16/7/19.*/
public class PropertyUtilTest {@Testpublic void testGetProperties() {Properties properties = PropertyUtil.getProperties("fast");String fastFrameworkName = properties.getProperty("fast.framework.name");String authorName = properties.getProperty("fast.framework.author");Object age = properties.getOrDefault("fast.framework.age",10);Object defaultVal = properties.getOrDefault("fast.framework.null",10);System.out.println(fastFrameworkName);System.out.println(authorName);System.out.println(age.toString());System.out.println(defaultVal.toString());}@Testpublic void testGetString() {Properties properties = PropertyUtil.getProperties("fast");String fastFrameworkName = PropertyUtil.getString(properties,"fast.framework.name");String authorName = PropertyUtil.getString(properties,"fast.framework.author");System.out.println(fastFrameworkName);System.out.println(authorName);}@Testpublic void testGetOrDefault() {Properties properties = PropertyUtil.getProperties("fast");Object age = PropertyUtil.getOrDefault(properties,"fast.framework.age",10);Object defaultVal = PropertyUtil.getOrDefault(properties,"fast.framework.null",10);System.out.println(age.toString());System.out.println(defaultVal.toString());}
}
Run Console:
1 10 fast bysocket 1 10 fast bysocket
相关对应代码分享在 Github 主页
二、JACKSON 案例
首先,加个Maven 依赖:
<!-- Jackson --><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-jaxrs</artifactId><version>1.9.13</version></dependency>
然后直接上代码JSONUtil:
/*** JSON 工具类* <p/>* Created by bysocket on 16/7/19.*/
public class JSONUtil {private static final Logger LOGGER = LoggerFactory.getLogger(JSONUtil.class);/*** 默认JSON类**/private static final ObjectMapper mapper = new ObjectMapper();/*** 将 Java 对象转换为 JSON 字符串** @param object* @param <T>* @return*/public static <T> String toJSONString(T object) {String jsonStr;try {jsonStr = mapper.writeValueAsString(object);} catch (Exception e) {LOGGER.error("Java Object Can't covert to JSON String!");throw new RuntimeException(e);}return jsonStr;}/*** 将 JSON 字符串转化为 Java 对象** @param json* @param clazz* @param <T>* @return*/public static <T> T toObject(String json, Class<T> clazz) {T object;try {object = mapper.readValue(json, clazz);} catch (Exception e) {LOGGER.error("JSON String Can't covert to Java Object!");throw new RuntimeException(e);}return object;}}
UT如下:
/*** {@link JSONUtil} 测试用例* <p/>* Created by bysocket on 16/7/19.*/
public class JSONUtilTest {@Testpublic void testToJSONString() {JSONObject jsonObject = new JSONObject(1, "bysocket", 33);String jsonStr = JSONUtil.toJSONString(jsonObject);Assert.assertEquals("{\"age\":1,\"name\":\"bysocket\",\"id\":33}", jsonStr);}@Test(expected = RuntimeException.class)public void testToJSONStringError() {JSONUtil.toJSONString(System.out);}@Testpublic void testToObject() {JSONObject jsonObject = new JSONObject(1, "bysocket", 33);String jsonStr = JSONUtil.toJSONString(jsonObject);JSONObject resultObject = JSONUtil.toObject(jsonStr, JSONObject.class);Assert.assertEquals(jsonObject.toString(), resultObject.toString());}@Test(expected = RuntimeException.class)public void testToObjectError() {JSONUtil.toObject("{int:1}", JSONObject.class);}
}class JSONObject {int age;String name;Integer id;public JSONObject() {}public JSONObject(int age, String name, Integer id) {this.age = age;this.name = name;this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}@Overridepublic String toString() {return "JSONObject{" +"age=" + age +", name='" + name + '\'' +", id=" + id +'}';}
}
Run Console(抛出了异常信息):
16/07/19 23:09:13 ERROR util.JSONUtil: JSON String Can't covert to Java Object! 16/07/19 23:09:13 ERROR util.JSONUtil: Java Object Can't covert to JSON String!
三、小结
相关对应代码分享在 Github 主页 请看到的Java小伙伴多交流多评论改进之。 参考 黄勇 smart
如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈~ 你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。
Code片段 : .properties属性文件操作工具类 JSON工具类相关推荐
- JSON基础及Java的JSON工具类
一.JSON基础 定义:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的 ...
- java 多个类共用属性_java中读写Properties属性文件公用方法详解
前言 大家都知道Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改 ...
- java 写文件 属性吗_使用JAVA读写Properties属性文件
自己定义一个属性文件:例如prop.properties baseFilePath=D\:/kuanter/resource tesx=abcd 我们要做的第一步就是要将文件读取到Properties ...
- Java学习笔记——JDBC读取properties属性文件
Java 中的 properties 文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件. 文件的内容是格式是"键=值"(key-valu ...
- 常用JSON工具类JsonUtil封装
前言 项目中经常会有String转Object以及Object转Json字符串的需求,故封装一个常用Json工具类 Maven依赖 <dependency><groupId>o ...
- 华为云OBS文件上传下载工具类
Java-华为云OBS文件上传下载工具类 文章目录 Java-华为云OBS文件上传下载工具类 1.华为云obs文件上传下载 2.文件流转MultipartFile 3.File转换为Multipart ...
- JAVA 文件上传下载工具类
JAVA 文件上传下载工具类 import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org. ...
- SpringBoot的JSON工具类(java),用于前后端分离
简介 JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式.它基于 ECMAScript(European Computer Manufactur ...
- 强大的Java Json工具类
Json解析所需jar包:http://download.csdn.net/detail/u014676619/9238793 工具类: import java.io.BufferedReader; ...
最新文章
- 项目Makefile文件模板
- 编写高质量代码改善C#程序的157个建议——建议86:Parallel中的异常处理
- YII CRUD 例子
- 索尼电脑娱乐(SCE)公司周一宣布
- subclipse用法
- C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它...
- 计算机图形学Web前端笔记-浏览器中心点转场景坐标理论及实现(two.js)
- ASP.NET项目中的驼峰格式JSON响应
- 听音扒谱app_掌握这些,你也可以轻松扒谱(下)
- android 字体修改颜色代码,Android SearchView 修改字体颜色
- 计算机一级的wps软件,计算机一级WPS
- A站工具姬pc电脑版
- ElasticSearch 分片(Shards)的详解
- XXE漏洞的详解与利用
- 线性表的顺序存储结构——顺序表
- miui7 usb计算机连接网络,miui7怎么打开usb调试功能?小米miui7 usb调试模式开启方法图解...
- 计算机类一级学术刊物、核心刊物列表及简介
- Xilinx FFT IP使用总结
- 语音识别公司排名YQ5969智能语音识别模块的快速崛起
- 股市大跌对于IT行业的我们应该如何应对!2020年Android开发的未来发展方向该如何走?
热门文章
- 超图桌面开发VC++ 入门程序
- CMD命令行下载文件
- 【bzoj4571SCOI2016美味】
- iOS手势之pinch
- Entity Framework 学习初级篇7--基本操作:增加、更新、删除、事务
- Storm具体的解释(二)、成为第一Storm申请书
- 带卷积核二分类网络的输出是不是有方向的?
- python无法启动该程序因为计算机中丢失_python报错:无法启动此程序,因为计算机中丢失...
- 【控制】二阶含时滞多智能体系统一致性仿真程序 离散化处理
- 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-第3章-采样环境下带有领航者的二阶多智能体系统的一致性