<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 4, comments - 1, trackbacks - 0, articles - 2
    有個朋友要用getClass().getResourceAsStream() 提取test.properties

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

    得出的數(shù)據(jù)還是最初的那個

    我后來試了一下 代碼如下

    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 缺一直改變

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


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

    現(xiàn)在發(fā)現(xiàn)如果我更改Properties ,會立刻做出反應(yīng)

    main函數(shù)中的代碼我的理解如下 每次ClassLoader都在加載ClassPath下的文件,當(dāng)發(fā)現(xiàn)改變就構(gòu)成Properties 改變

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

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

    新發(fā)現(xiàn):

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

    所以如果想test.properties隨時變 用絕對路徑 InputStream is = new FileInputStream("絕對路徑")
    就可以了
    主站蜘蛛池模板: 一区二区三区在线观看免费| 0588影视手机免费看片| 久久亚洲国产伦理| 免费精品国偷自产在线在线| 美女的胸又黄又www网站免费| 亚洲AV无码1区2区久久| 美女视频黄是免费的网址| 五月天国产成人AV免费观看| 亚洲黄色一级毛片| 亚洲精品国产精品国自产观看| 97碰公开在线观看免费视频| 一级大黄美女免费播放| 亚洲第一成年网站大全亚洲| 亚洲成AV人网址| 国产福利在线免费| 最近免费中文字幕中文高清| 亚洲欧洲无卡二区视頻| 内射干少妇亚洲69XXX| 一本久到久久亚洲综合| 毛片大全免费观看| 久久免费国产视频| 一个人免费观看www视频| 亚洲欧洲无卡二区视頻| 亚洲日本香蕉视频观看视频| 国产av无码专区亚洲av果冻传媒| 处破痛哭A√18成年片免费| 久久ww精品w免费人成| 一级大黄美女免费播放| 国产精品自拍亚洲| youjizz亚洲| 亚洲国产女人aaa毛片在线| 亚洲中久无码不卡永久在线观看| 成人无码区免费视频观看| 在线观看免费中文视频| 成全动漫视频在线观看免费高清版下载 | 成人免费在线看片| 日韩免费电影网址| a级毛片黄免费a级毛片| 一区二区三区免费在线视频| 亚洲人成色777777精品| 一本天堂ⅴ无码亚洲道久久|