java中getResourceAsStream的问题 - 缓存

本文探讨了在Java应用程序中,当property文件被修改后,如何使更改生效的问题。详细介绍了getResourceAsStream()方法的缓存机制,并提供了一种通过FileInputStream替代的方法来实时读取最新文件内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行状态下property文件已经被改动了,但是使用getResourceAsStream()方法读取的文件没发生变化,还是和最初启动服务器时的一致。在网上查了一下,有人说是getResourceAsStream()方法读取新文件后会被java虚拟机缓存,而再次调用getResourceAsStream()方法时会先查找java虚拟机中是否有此文件,如果有则直接返回,如果没有才会去根据传入的name获取文件

 

 

[java]  view plain copy print ?
  1. final Properties prop = new Properties();  
  2.   
  3. Property(String file){  
  4.       
  5.     try {  
  6.         prop.load(this.getClass().getResourceAsStream(file));  
  7.     } catch (FileNotFoundException e) {  
  8.         e.printStackTrace(System.err);  
  9.     } catch (IOException e) {  
  10.         e.printStackTrace(System.err);  
  11.     }  
  12. }  


应该改为

 

 

 

[java]  view plain copy print ?
    1. final Properties prop = new Properties();  
    2.   
    3. Property(String file){  
    4.       
    5.     try {  
    6.         prop.load(new FileInputStream(this.getClass().getResource(file).getFile()));  
    7.           
    8.     } catch (FileNotFoundException e) {  
    9.         e.printStackTrace(System.err);  
    10.     } catch (IOException e) {  
    11.         e.printStackTrace(System.err);  
    12.     }  
    13. }  

转载于:https://www.cnblogs.com/eggbucket/archive/2012/12/22/2829523.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值