今天忙了一下午,終于把這個讀取方法寫到了,當然引用網絡上的一個方法;其實同事也寫了一個讀取方法,但是感覺過于復雜。
總結一個:主要分幾個步驟
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()方法調用了上面的獲取完整路徑的方法,即可。