1.情景展示
将要访问的接口地址等常用的配置添加到properties文件中,比直接写到java类中的好处在于:
当我们需要修改相应配置时,直接修改properties文件,重启tomcat即可,避免了重新编译引用该配置的java文件,同时,也便于项目的维护。
方式一
通过spring的工具类PropertiesLoaderUtils来实现对properties文件的解析
所需jar包:spring的核心jar包,spring-core-版本号.jar
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.springframework.core.io.support.PropertiesLoaderUtils;
public class PropertiesUtils {
public static Map readProperties(String fileName) {
Map resultMap = new HashMap();
try {
Properties props = PropertiesLoaderUtils.loadAllProperties(fileName);
for (Object key : props.keySet()) {
resultMap.put(key.toString(), props.get(key).toString());
}
} catch (IOException e) {
e.printStackTrace();
}
return resultMap;
}
public static void main(String[] args) {
// Map map = readProperties("base/web/imageInfo/fileRootDirectories.properties");
Map map = readProperties("fileRootDirectories.properties");
for (Object key : map.keySet()) {
System.out.println(key.toString() + "=" + map.get(key).toString());
}
// 打印结果
// fileRootPath=uploadFiles
}
}
这种方式的缺点在于:
每次调用都要重新解析对应的properties文件,所以,我们可以在项目启动的时候,就把该文件加载到内存中(一次加载解析,永久使用)。
方式二
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class PropertyUtils_old {
private static Logger logger = LoggerFactory.getLogger(PropertyUtils_old.class);
// 待解析的properties文件名称
private static final String FILE_NAME = "bill.properties";
// 用于接收解析过properties文件
private static Properties props;
// 静态代码块:在该类被加载到内容中时,该代码块会执行
static {
// 静态代码块执行时将要执行的方法
loadPropertiesFile();
}
synchronized static private void loadPropertiesFile() {
logger.debug("开始加载properties文件内容.......");
props = new Properties();
InputStream in = null;
try {
// 方式一:通过类加载器进行获取properties文件流(不用添加路径)
in = PropertyUtils_old.class.getClassLoader().getResourceAsStream(FILE_NAME);
// 方式二:通过类进行获取properties文件流(需要加/)
// in = PropertyUtils.class.getResourceAsStream("/bill.properties");
props.load(in);
} catch (NullPointerException e) {
logger.error("bill.properties文件未找到!");
} catch (IOException e) {
logger.error("出现IOException!");
} finally {
try {
if (null != in) {
in.close();
}
} catch (IOException e) {
logger.error("bill.properties文件流关闭出现异常");
}
}
logger.info("加载properties文件内容完成...........");
logger.info("properties文件内容:" + props);
}
public static String getProperty(String key) {
if (null == props) {
loadPropertiesFile();
}
return props.getProperty(key);
}
public static String getProperty(String key, String defaultValue) {
if (null == props) {
loadPropertiesFile();
}
return props.getProperty(key, defaultValue);
}
}
测试
public static void main(String[] args) {
System.out.println(getProperty("bill.czInterfaceAddress"));
}
方式一也可以按照方式二的形式,来达到一次加载,永久使用的效果。
以上就是java 如何读取properties文件的详细内容,更多关于java 读取properties文件的资料请关注考高分网其它相关文章!



