Java封装 properties文件操作
/**
* Prop. Prop can load properties file from CLASSPATH or File object.
*/
public class Prop { private Properties properties = null; /**
* Prop constructor.
* @see #Prop(String, String)
*/
public Prop(String fileName) {
this(fileName, Const.DEFAULT_ENCODING);
} /**
* Prop constructor
* <p>
* Example:<br>
* Prop prop = new Prop("my_config.txt", "UTF-8");<br>
* String userName = prop.get("userName");<br><br>
*
* prop = new Prop("com/jfinal/file_in_sub_path_of_classpath.txt", "UTF-8");<br>
* String value = prop.get("key");
*
* @param fileName the properties file's name in classpath or the sub directory of classpath
* @param encoding the encoding
*/
public Prop(String fileName, String encoding) {
InputStream inputStream = null;
try {
inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName); // properties.load(Prop.class.getResourceAsStream(fileName));
if (inputStream == null)
throw new IllegalArgumentException("Properties file not found in classpath: " + fileName);
properties = new Properties();
properties.load(new InputStreamReader(inputStream, encoding));
} catch (IOException e) {
throw new RuntimeException("Error loading properties file.", e);
}
finally {
if (inputStream != null) try {inputStream.close();} catch (IOException e) {e.printStackTrace();}
}
} /**
* Prop constructor.
* @see #Prop(File, String)
*/
public Prop(File file) {
this(file, Const.DEFAULT_ENCODING);
} /**
* Prop constructor
* <p>
* Example:<br>
* Prop prop = new Prop(new File("/var/config/my_config.txt"), "UTF-8");<br>
* String userName = prop.get("userName");
*
* @param file the properties File object
* @param encoding the encoding
*/
public Prop(File file, String encoding) {
if (file == null)
throw new IllegalArgumentException("File can not be null.");
if (file.isFile() == false)
throw new IllegalArgumentException("Not a file : " + file.getName()); InputStream inputStream = null;
try {
inputStream = new FileInputStream(file);
properties = new Properties();
properties.load(new InputStreamReader(inputStream, encoding));
} catch (IOException e) {
throw new RuntimeException("Error loading properties file.", e);
}
finally {
if (inputStream != null) try {inputStream.close();} catch (IOException e) {e.printStackTrace();}
}
} public String get(String key) {
return properties.getProperty(key);
} public String get(String key, String defaultValue) {
String value = get(key);
return (value != null) ? value : defaultValue;
} public Integer getInt(String key) {
String value = get(key);
return (value != null) ? Integer.parseInt(value) : null;
} public Integer getInt(String key, Integer defaultValue) {
String value = get(key);
return (value != null) ? Integer.parseInt(value) : defaultValue;
} public Long getLong(String key) {
String value = get(key);
return (value != null) ? Long.parseLong(value) : null;
} public Long getLong(String key, Long defaultValue) {
String value = get(key);
return (value != null) ? Long.parseLong(value) : defaultValue;
} public Boolean getBoolean(String key) {
String value = get(key);
return (value != null) ? Boolean.parseBoolean(value) : null;
} public Boolean getBoolean(String key, Boolean defaultValue) {
String value = get(key);
return (value != null) ? Boolean.parseBoolean(value) : defaultValue;
} public boolean containsKey(String key) {
return properties.containsKey(key);
} public Properties getProperties() {
return properties;
}
}
/**
* PropKit. PropKit can load properties file from CLASSPATH or File object.
*/
public class PropKit { private static Prop prop = null;
private static final Map<String, Prop> map = new ConcurrentHashMap<String, Prop>(); private PropKit() {} /**
* Using the properties file. It will loading the properties file if not loading.
* @see #use(String, String)
*/
public static Prop use(String fileName) {
return use(fileName, Const.DEFAULT_ENCODING);
} /**
* Using the properties file. It will loading the properties file if not loading.
* <p>
* Example:<br>
* PropKit.use("config.txt", "UTF-8");<br>
* PropKit.use("other_config.txt", "UTF-8");<br><br>
* String userName = PropKit.get("userName");<br>
* String password = PropKit.get("password");<br><br>
*
* userName = PropKit.use("other_config.txt").get("userName");<br>
* password = PropKit.use("other_config.txt").get("password");<br><br>
*
* PropKit.use("com/jfinal/config_in_sub_directory_of_classpath.txt");
*
* @param fileName the properties file's name in classpath or the sub directory of classpath
* @param encoding the encoding
*/
public static Prop use(String fileName, String encoding) {
Prop result = map.get(fileName);
if (result == null) {
result = new Prop(fileName, encoding);
map.put(fileName, result);
if (PropKit.prop == null)
PropKit.prop = result;
}
return result;
} /**
* Using the properties file bye File object. It will loading the properties file if not loading.
* @see #use(File, String)
*/
public static Prop use(File file) {
return use(file, Const.DEFAULT_ENCODING);
} /**
* Using the properties file bye File object. It will loading the properties file if not loading.
* <p>
* Example:<br>
* PropKit.use(new File("/var/config/my_config.txt"), "UTF-8");<br>
* Strig userName = PropKit.use("my_config.txt").get("userName");
*
* @param file the properties File object
* @param encoding the encoding
*/
public static Prop use(File file, String encoding) {
Prop result = map.get(file.getName());
if (result == null) {
result = new Prop(file, encoding);
map.put(file.getName(), result);
if (PropKit.prop == null)
PropKit.prop = result;
}
return result;
} public static Prop useless(String fileName) {
Prop previous = map.remove(fileName);
if (PropKit.prop == previous)
PropKit.prop = null;
return previous;
} public static void clear() {
prop = null;
map.clear();
} public static Prop getProp() {
if (prop == null)
throw new IllegalStateException("Load propties file by invoking PropKit.use(String fileName) method first.");
return prop;
} public static Prop getProp(String fileName) {
return map.get(fileName);
} public static String get(String key) {
return getProp().get(key);
} public static String get(String key, String defaultValue) {
return getProp().get(key, defaultValue);
} public static Integer getInt(String key) {
return getProp().getInt(key);
} public static Integer getInt(String key, Integer defaultValue) {
return getProp().getInt(key, defaultValue);
} public static Long getLong(String key) {
return getProp().getLong(key);
} public static Long getLong(String key, Long defaultValue) {
return getProp().getLong(key, defaultValue);
} public static Boolean getBoolean(String key) {
return getProp().getBoolean(key);
} public static Boolean getBoolean(String key, Boolean defaultValue) {
return getProp().getBoolean(key, defaultValue);
} public static boolean containsKey(String key) {
return getProp().containsKey(key);
}
}
Java封装 properties文件操作的更多相关文章
- java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)
java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...
- java 读取properties文件总结
一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResource ...
- java基础学习总结——java读取properties文件总结
摘录自:http://www.cnblogs.com/xdp-gacl/p/3640211.html 一.java读取properties文件总结 在java项目中,操作properties文件是经常 ...
- properties文件操作
properties文件操作类 可以使用java.util.Properties读取.properties文件中的内容 import java.io.InputStream; import java. ...
- Java读properties文件中文乱码问题的解决方法
java读properties文件,包含中文字符的主要有两种: 1.key中包含中文字符的(value中也有可能包含) 2.key中不包含中文字符的(value中有可能包含) 1.key中包含中文字符 ...
- java读properties文件 乱码
java读properties文件,包含中文字符的主要有两种: 1.key中包含中文字符的(value中也有可能包含) 2.key中不包含中文字符的(value中有可能包含) 1.key中包含中文字符 ...
- java基础—java读取properties文件
一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResource ...
- Java基础学习总结(15)——java读取properties文件总结
一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResource ...
- java读取properties文件总结
一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResource ...
随机推荐
- axis : java.lang.NoSuchMethodError
Hi friends,Iam getting the following error when deploying my app in jboss error.Iam new to axis .can ...
- java.lang.NoClassDefFoundError: javax/wsdl/OperationType
You should find the javax.wsdl package inside wsdl4j.jar Check for the line starting with 'Found IBM ...
- 概述什么是OSGi框架
现 在越来越多的Java开发人员在谈论OSGi是有其道理的.在几年前上学的时候我进行了比较多的Eclipse插件开发,当时就亲身感觉到Eclipse 插件体系的灵活与强大,而该体系与OSGi也可谓一脉 ...
- 亲测!Jquery2.0不支持IE8-了
最近由于测试需要,Win7回退到了官方更新的IE8浏览器,惊人的发现: <script src="//cdn.bootcss.com/jquery/2.0.0/jquery.min.j ...
- UVa 11732 (Tire树) "strcmp()" Anyone?
这道题也是卡了挺久的. 给出一个字符串比较的算法,有n个字符串两两比较一次,问一共会有多少次比较. 因为节点会很多,所以Tire树采用了左儿子右兄弟的表示法来节省空间. 假设两个不相等的字符串的最长公 ...
- Self-Paced Training (3) - Docker Operations
AgendaTroubleshooting ContainersOverview of Security PracticesPrivate RegistryIntro to Docker Machin ...
- Web Api 返回参数,实现统一标准化!
string camelCaseObj = JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.None, new JsonSer ...
- The resource could not be loaded because the App Transport
Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Xcode7 beta 网络请求报错:The ...
- phonegap archive 报错 Cordova/CDVViewController.h' file not found
在BuildSettings->Header Search Paths 增加如下路径,问题解决 $(OBJROOT)/UninstalledProducts/include "$(O ...
- UVA 10047 The Monocycle
大白图论第二题··· 题意:独轮车的轮子被均分成五块,每块一个颜色,每走过一个格子恰好转过一个颜色. 在一个迷宫中,只能向前走或者左转90度或右转90度(我曾天真的认为是向左走和向右走···),每个操 ...