……天天向上

          好的想法總是無窮無盡

          統(tǒng)計(jì)

          留言簿(1)

          閱讀排行榜

          評論排行榜

          java 應(yīng)用程序讀取jar包外自定義配置文件及l(fā)og4j日志配置文件

          今天忙了一下午,終于把這個讀取方法寫到了,當(dāng)然引用網(wǎng)絡(luò)上的一個方法;其實(shí)同事也寫了一個讀取方法,但是感覺過于復(fù)雜。
          總結(jié)一個:主要分幾個步驟
          1、因?yàn)槭亲x取外部目錄的配置文件,因此不適用該方式:
          ResourceBundle rsb1 = ResourceBundle.getBundle("D:/WORK/XXXX/XXXXCount.properties");默認(rèn)讀取與該類同路徑的配置文件;
          private static String proFileFoLog4j=Logger.getLogger(XXXXAuth.class);默認(rèn)讀取jar包中的log4j日志配置文件;

          2、解決方法1:
          1)、重新加載Properties文件:
            Properties pro = new Properties();
            String path=getConf(proFileName);//獲取當(dāng)前類所在的路徑,該方法請看下面。
                  try {
                   pro.load(new FileInputStream(path));
            } catch (FileNotFoundException e) {
             e.printStackTrace();
            } catch (IOException e) {
             e.printStackTrace();
            }
          2)、編寫一個獲取當(dāng)前類路徑的方法,這里直接使用了網(wǎng)友已經(jīng)寫好的代碼,直接運(yùn)行,不用修改,省事!當(dāng)然還有其它的獲取路徑的方法:
           // 其他方法的定義 //
           /**
            * *getAppPath需要一個當(dāng)前程序使用的Java類的class屬性參數(shù),它可以 返回打包過的
            * *Java可執(zhí)行文件(jar,war)所處的系統(tǒng)目錄名或非打包Java程 序所處的目錄
            *
            * @param cls為Class類型
            *@return 返回值為該類所在的 Java程序運(yùn)行的目錄
            */
           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定義 結(jié)束

          3)獲取完整的配置文件路徑名稱: String path=getConf.getAppPath(XXXXAuth.class)+proFileName;被第一步pro.load(new FileInputStream(path));調(diào)用即可獲取配置文件。
          4)通過getProperties(proFileFoRead).get("XXXXAUTH.ISENABLE").toString();獲取配置文件信息即可。

          2、解決方法2:
          關(guān)于log4j引用外部文件夾的log4j.properties文件,有一種最簡單的方法:直接在main函數(shù)中加入如下一句:
          PropertyConfigurator.configure(getConf(proFileFoLog4j)); //設(shè)置log4j配置文件的路徑
          其中g(shù)etConf()方法調(diào)用了上面的獲取完整路徑的方法,即可。




          posted on 2012-05-17 19:10 japper 閱讀(9068) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 凭祥市| 大理市| 台南县| 静宁县| 巩义市| 南平市| 武城县| 新民市| 澎湖县| 涟源市| 寿光市| 白沙| 奉新县| 东源县| 泸西县| 克拉玛依市| 察哈| 安塞县| 克什克腾旗| 云安县| 新野县| 万州区| 宜城市| 襄樊市| 新巴尔虎右旗| 嘉鱼县| 四子王旗| 河北省| 乌鲁木齐县| 大关县| 东阳市| 旬邑县| 肥西县| 什邡市| 阿城市| 汉源县| 伊吾县| 龙江县| 六安市| 紫金县| 时尚|