今天忙了一下午,终于把这个读取方法写到了,当然引用网络上的一个方法;其实同事也写了一个读取方法,但是感觉过于复杂。
总结一个:主要分几个步骤
1、因为是读取外部目录的配置文件,因此不适用该方式:
ResourceBundle rsb1 = ResourceBundle.getBundle("D:/WORK/XXXX/XXXXCount.properties");默认读取与该类同路径的配置文件;
private static String proFileFoLog4j=Logger.getLogger(XXXXAuth.class);默认读取jar包中的log4j日志配置文件;
2、解决方法1:
1)、重新加载Properties文件:
Properties pro = new Properties();
String path=getConf(proFileName);//获取当前类所在的路径,该方法请看下面。
try {
pro.load(new FileInputStream(path));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
2)、编写一个获取当前类路径的方法,这里直接使用了网友已经写好的代码,直接运行,不用修改,省事!当然还有其它的获取路径的方法:
// 其他方法的定义 //
/**
* *getAppPath需要一个当前程序使用的Java类的class属性参数,它可以 返回打包过的
* *Java可执行文件(jar,war)所处的系统目录名或非打包Java程 序所处的目录
*
* @param cls为Class类型
*@return 返回值为该类所在的 Java程序运行的目录
*/
public static String getAppPath(Class cls) {
ClassLoader loader = cls.getClassLoader();
String clsName = cls.getName() + ".class";
Package pack = cls.getPackage();
String path = "";
if (pack != null)
{
String packName = pack.getName();
clsName = clsName.substring(packName.length() + 1);
if (packName.indexOf(".") < 0)
path = packName + "/";
else {
int start = 0, end = 0;
end = packName.indexOf(".");
while (end != -1) {
path = path + packName.substring(start, end) + "/";
start = end + 1;
end = packName.indexOf(".", start);
}
path = path + packName.substring(start) + "/";
}
}
java.net.URL url = loader.getResource(path + clsName);
String realPath = url.getPath();
int pos = realPath.indexOf("file:");
if (pos > -1)
realPath = realPath.substring(pos + 5);
pos = realPath.indexOf(path + clsName);
realPath = realPath.substring(0, pos - 5);
if (realPath.endsWith("!"))
realPath = realPath.substring(0, realPath.lastIndexOf("/"));
return realPath;
}// getAppPath定义 结束
3)获取完整的配置文件路径名称: String path=getConf.getAppPath(XXXXAuth.class)+proFileName;被第一步pro.load(new FileInputStream(path));调用即可获取配置文件。
4)通过getProperties(proFileFoRead).get("XXXXAUTH.ISENABLE").toString();获取配置文件信息即可。
2、解决方法2:
关于log4j引用外部文件夹的log4j.properties文件,有一种最简单的方法:直接在main函数中加入如下一句:
PropertyConfigurator.configure(getConf(proFileFoLog4j)); //设置log4j配置文件的路径
其中getConf()方法调用了上面的获取完整路径的方法,即可。