posts - 4, comments - 1, trackbacks - 0, articles - 2

          2007年7月6日

          有新發現 發現一個firefox的插件 具有把http資源解析成PDF的功能 先研究一下這個東西

          posted @ 2007-07-23 09:41 黃鵬霄 閱讀(273) | 評論 (1)編輯 收藏

          有個朋友要用getClass().getResourceAsStream() 提取test.properties

          但是在服務器運行過程中 無論怎么更改test.properties

          得出的數據還是最初的那個

          我后來試了一下 代碼如下

          package test;

          import java.io.FileInputStream;
          import java.io.IOException;
          import java.io.InputStream;
          import java.util.Properties;

          public class Test {
              Properties pp 
          = null;

              
          public Properties getData() throws IOException {
                  InputStream is 
          = getClass().getResourceAsStream("/test.properties");
                  
          // InputStream is = new FileInputStream(
                  
          // "D:\\java\\apache-tomcat-5.5.17\\apache-tomcat-5.5.17\\webapps\\testp\\WEB-INF\\classes\\test.properties");
                  System.out.println(is.hashCode());
                  pp 
          = new Properties();
                  pp.load(is);
                  System.out.println(pp.hashCode());
                  
          // Properties pp = System.getProperties();
                  
          // Enumeration<String> enu = (Enumeration<String>) pp.propertyNames();
                  
          // while(enu.hasMoreElements()){
                  
          // String name = enu.nextElement();
                  
          // System.out.println(name + "=" +pp.getProperty(name));
                  
          // }
                  
          // is.close();
                  is.close();
                  
          return pp;
              }

              
          public static Properties getProperties() {
                  
          try {
                      
          return new Test().getData();
                  } 
          catch (IOException e) {
                      e.printStackTrace();
                  }
                  
          return null;
              }

              
          public static void main(String[] args) {
                  
          while (true) {
                      System.out.println(getProperties());
                      
          try {
                          Thread.sleep(
          1000L);
                      } 
          catch (InterruptedException e) {
                          e.printStackTrace();
                      }
                  }
              }
          }
          上面這個解析的Properties pp 的hashcode 始終不變

          而InputStream 的hash 缺一直改變

          由此可以推斷結論有
          getClass().getResourceAsStream() 是ClassLoader 加載Class一樣的把test.properties 加載進了內存


          但是針對上面的紅字我寫了MAIN函數做為測試

          現在發現如果我更改Properties ,會立刻做出反應

          main函數中的代碼我的理解如下 每次ClassLoader都在加載ClassPath下的文件,當發現改變就構成Properties 改變

          所以我想這是不是tomcat的ClassLoader 的一個bug ??

          以上言論,均屬我的猜測,還望高手指點.

          新發現:

            InputStream is = Test.class.getClassLoader().getResourceAsStream(// .getResourceAsStream(
            InputStream is = Test.class.getResourceAsStream(// .getResourceAsStream(
          這樣加載的Properties 是兩個不同的實例 我的意思是想說兩份不同的內存

          所以如果想test.properties隨時變 用絕對路徑 InputStream is = new FileInputStream("絕對路徑")
          就可以了

          posted @ 2007-07-06 00:08 黃鵬霄 閱讀(3443) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 兖州市| 绵竹市| 灵武市| 兴安县| 德令哈市| 高雄县| 晋州市| 门源| 吉隆县| 易门县| 安庆市| 都兰县| 甘洛县| 象山县| 滦南县| 祁阳县| 宝应县| 犍为县| 呼伦贝尔市| 伊宁市| 莱西市| 海南省| 宝应县| 枣庄市| 仁寿县| 桑日县| 三江| 永年县| 正镶白旗| 溧水县| 清丰县| 荣成市| 新津县| 应城市| 宁阳县| 武邑县| 克山县| 泊头市| 巧家县| 吉水县| 米泉市|