ResourceUtils读取properties文件
注意:
properties文件要放在classPath下面,也就是与src下。
path.properties(在properties文件中\代表着没有完,下行同本行是一个内容)
perfectMaterial=fileLibrary/completeFile/perfectMaterial perfectMaterialPDF=fileLibrary/completeFile/perfectMaterialPDF promiseFile=fileLibrary/originalFile/promiseFile signatureFile=signature signatureBackupFile=signatureBackup investigatePicture=fileLibrary/originalFile/investigatePicture auditPicture=fileLibrary/originalFile/auditPicture auditReprt=fileLibrary/originalFile/auditReprt sevenMaterial=fileLibrary/originalFile/sevenMaterial sevenMaterialPdf=fileLibrary/originalFile/PDFFile/sevenMaterialPdf auditReportWordAndPdf=fileLibrary/originalFile/auditReportWordAndPdf jdbc.test=fileLibrary/originalFile/auditReportWordAndPdf
hello=hell\
onimei
ResourcesUtil.java
package Utils.ResourceUtil; import java.io.Serializable; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.ResourceBundle; import java.util.Set; /** * 资源文件读取工具类 * */ public class ResourcesUtil implements Serializable { private static final long serialVersionUID = -7657898714983901418L; /** * 系统语言环境,默认为中文zh */ public static final String LANGUAGE = "zh"; /** * 系统国家环境,默认为中国CN */ public static final String COUNTRY = "CN"; private static Locale getLocale() { Locale locale = new Locale(LANGUAGE, COUNTRY); return locale; } /** * 根据语言、国家、资源文件名和key名字获取资源文件值 * * @param language * 语言 * * @param country * 国家 * * @param baseName * 资源文件名 * * @param section * key名字 * * @return 值 */ private static String getProperties(String baseName, String section) { String retValue = ""; try { Locale locale = getLocale(); ResourceBundle rb = ResourceBundle.getBundle(baseName, locale); retValue = (String) rb.getObject(section); } catch (Exception e) { e.printStackTrace(); // TODO 添加处理 } return retValue; } /** * 通过key从资源文件读取内容 * * @param fileName * 资源文件名 * * @param key * 索引 * * @return 索引对应的内容 */ public static String getValue(String fileName, String key) { String value = getProperties(fileName,key); return value; } public static List<String> gekeyList(String baseName) { Locale locale = getLocale(); ResourceBundle rb = ResourceBundle.getBundle(baseName, locale); List<String> reslist = new ArrayList<String>(); Set<String> keyset = rb.keySet(); for (Iterator<String> it = keyset.iterator(); it.hasNext();) { String lkey = (String)it.next(); reslist.add(lkey); } return reslist; } /** * 通过key从资源文件读取内容,并格式化 * * @param fileName * 资源文件名 * * @param key * 索引 * * @param objs * 格式化参数 * * @return 格式化后的内容 */ public static String getValue(String fileName, String key, Object[] objs) { String pattern = getValue(fileName, key); String value = MessageFormat.format(pattern, objs); return value; } public static void main(String[] args) { System.out.println(getValue("resources.messages", "101",new Object[]{100,200})); //根据操作系统环境获取语言环境 /*Locale locale = Locale.getDefault(); System.out.println(locale.getCountry());//输出国家代码 System.out.println(locale.getLanguage());//输出语言代码s //加载国际化资源(classpath下resources目录下的messages.properties,如果是中文环境会优先找messages_zh_CN.properties) ResourceBundle rb = ResourceBundle.getBundle("resources.messages", locale); String retValue = rb.getString("101");//101是messages.properties文件中的key System.out.println(retValue); //信息格式化,如果资源中有{}的参数则需要使用MessageFormat格式化,Object[]为传递的参数,数量根据资源文件中的{}个数决定 String value = MessageFormat.format(retValue, new Object[]{100,200}); System.out.println(value); */ } }
测试代码
package Utils.ResourceUtil; import org.junit.Test; public class TestUtils { @Test public void Test1(){ System.out.println(ResourcesUtil.getValue("path", "investigatePicture")); System.out.println(ResourcesUtil.getValue("path", "auditReprt")); System.out.println(ResourcesUtil.getValue("path", "jdbc.test"));
System.out.println(ResourcesUtil.getProperties("path", "hello")); } }
结果:
fileLibrary/originalFile/investigatePicture
fileLibrary/originalFile/auditReprt
fileLibrary/originalFile/auditReportWordAndPdf
hellonimei (证明\是没完,将两行内容合并成一行)
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】