java中getResourceAsStream的問題 – 緩存 – JAVA編程語言程序開發技術文章

運行狀態下property文件已經被改動瞭,但是使用getResourceAsStream()方法讀取的文件沒發生變化,還是和最初啟動服務器時的一致。在網上查瞭一下,有人說是getResourceAsStream()方法讀取新文件後會被java虛擬機緩存,而再次調用getResourceAsStream()方法時會先查找java虛擬機中是否有此文件,如果有則直接返回,如果沒有才會去根據傳入的name獲取文件

 

[java]
final Properties prop = new Properties(); 
 
Property(String file){ 
     
    try { 
        prop.load(this.getClass().getResourceAsStream(file)); 
    } catch (FileNotFoundException e) { 
        e.printStackTrace(System.err); 
    } catch (IOException e) { 
        e.printStackTrace(System.err); 
    } 

應該改為

 

[java]
final Properties prop = new Properties(); 
 
Property(String file){ 
     
    try { 
        prop.load(new FileInputStream(this.getClass().getResource(file).getFile())); 
         
    } catch (FileNotFoundException e) { 
        e.printStackTrace(System.err); 
    } catch (IOException e) { 
        e.printStackTrace(System.err); 
    } 

發佈留言