摘要: 原创出处: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工具类相关推荐

  1. JSON基础及Java的JSON工具类

    一.JSON基础 定义:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的 ...

  2. java 多个类共用属性_java中读写Properties属性文件公用方法详解

    前言 大家都知道Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改 ...

  3. java 写文件 属性吗_使用JAVA读写Properties属性文件

    自己定义一个属性文件:例如prop.properties baseFilePath=D\:/kuanter/resource tesx=abcd 我们要做的第一步就是要将文件读取到Properties ...

  4. Java学习笔记——JDBC读取properties属性文件

    Java 中的 properties 文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件. 文件的内容是格式是"键=值"(key-valu ...

  5. 常用JSON工具类JsonUtil封装

    前言 项目中经常会有String转Object以及Object转Json字符串的需求,故封装一个常用Json工具类 Maven依赖 <dependency><groupId>o ...

  6. 华为云OBS文件上传下载工具类

    Java-华为云OBS文件上传下载工具类 文章目录 Java-华为云OBS文件上传下载工具类 1.华为云obs文件上传下载 2.文件流转MultipartFile 3.File转换为Multipart ...

  7. JAVA 文件上传下载工具类

    JAVA 文件上传下载工具类 import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org. ...

  8. SpringBoot的JSON工具类(java),用于前后端分离

    简介 JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式.它基于 ECMAScript(European Computer Manufactur ...

  9. 强大的Java Json工具类

    Json解析所需jar包:http://download.csdn.net/detail/u014676619/9238793 工具类: import java.io.BufferedReader; ...

最新文章

  1. 项目Makefile文件模板
  2. 编写高质量代码改善C#程序的157个建议——建议86:Parallel中的异常处理
  3. YII CRUD 例子
  4. 索尼电脑娱乐(SCE)公司周一宣布
  5. subclipse用法
  6. C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它...
  7. 计算机图形学Web前端笔记-浏览器中心点转场景坐标理论及实现(two.js)
  8. ASP.NET项目中的驼峰格式JSON响应
  9. 听音扒谱app_掌握这些,你也可以轻松扒谱(下)
  10. android 字体修改颜色代码,Android SearchView 修改字体颜色
  11. 计算机一级的wps软件,计算机一级WPS
  12. A站工具姬pc电脑版
  13. ElasticSearch 分片(Shards)的详解
  14. XXE漏洞的详解与利用
  15. 线性表的顺序存储结构——顺序表
  16. miui7 usb计算机连接网络,miui7怎么打开usb调试功能?小米miui7 usb调试模式开启方法图解...
  17. 计算机类一级学术刊物、核心刊物列表及简介
  18. Xilinx FFT IP使用总结
  19. 语音识别公司排名YQ5969智能语音识别模块的快速崛起
  20. 股市大跌对于IT行业的我们应该如何应对!2020年Android开发的未来发展方向该如何走?

热门文章

  1. 超图桌面开发VC++ 入门程序
  2. CMD命令行下载文件
  3. 【bzoj4571SCOI2016美味】
  4. iOS手势之pinch
  5. Entity Framework 学习初级篇7--基本操作:增加、更新、删除、事务
  6. Storm具体的解释(二)、成为第一Storm申请书
  7. 带卷积核二分类网络的输出是不是有方向的?
  8. python无法启动该程序因为计算机中丢失_python报错:无法启动此程序,因为计算机中丢失...
  9. 【控制】二阶含时滞多智能体系统一致性仿真程序 离散化处理
  10. 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-第3章-采样环境下带有领航者的二阶多智能体系统的一致性