<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

    但是在服務器運行過程中 無論怎么更改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("絕對路徑")
    就可以了
    主站蜘蛛池模板: 久久国产亚洲观看| 中国videos性高清免费| 精品亚洲aⅴ在线观看| 亚洲精品A在线观看| 成年女人免费v片| 久久99精品视免费看| 一级毛片aaaaaa视频免费看| 亚洲AV无码成人精品区日韩| 亚洲成a人片在线观看中文app| 亚洲国产精品无码久久SM| 亚洲国产综合精品中文字幕| 天天操夜夜操免费视频| 久热中文字幕在线精品免费| 国产免费网站看v片在线| 一级白嫩美女毛片免费| 羞羞的视频在线免费观看| 亚洲最大的成人网| 亚洲jizzjizz在线播放久| 亚洲色偷偷av男人的天堂| 亚洲AV成人无码久久精品老人| 国产乱辈通伦影片在线播放亚洲| 国产真实伦在线视频免费观看| 最近2019中文字幕mv免费看| 免费影院未满十八勿进网站| 无码国产精品一区二区免费式直播 | 国产a v无码专区亚洲av| 国产大片91精品免费观看男同| 成人免费无码大片a毛片软件 | 亚洲2022国产成人精品无码区| 国产专区一va亚洲v天堂| 亚洲区小说区图片区| 亚洲人成网站在线观看青青| 亚洲国产一级在线观看| 久久亚洲2019中文字幕| 亚洲精品视频免费观看| 亚洲精品成人区在线观看| 亚洲一区二区三区在线播放| 亚洲午夜av影院| 亚洲啪啪AV无码片| 久久久影院亚洲精品| 亚洲视频欧洲视频|