Java getResourceAsStream() 方法会缓存文件的问题

xxx.getClass().getClassLoader().getResourceAsStream("d:/test-config.properties")

这方法确实会缓存文件, 在WebApp里面,在不重启tomcat的情况下,修改本地文件,程序跑的时候不会加载最新的本地文件。

如果需要动态修改比如配置文件而不重启server,需要替换方法:

xxx.getClass().getClassLoader().getResource("d:/test-config.properties").openStream()

不过对于访问频繁的情况下,不建议用后者,io开销影响性能

时间: 2024-10-09 01:02:02

Java getResourceAsStream() 方法会缓存文件的问题的相关文章

对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释 (转)

对Class.getResourceAsStream和ClassLoader.getResourceAsStream方法所使用的资源路径的解释 标签: classgetResourceAsStreampath 2014-08-22 11:21 13675人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 这是个很基础的问题了,这里提供一些示例,帮助快速理解和记忆这个问题. 在该方法的文档:http://docs.oracle.com/javase/7/docs/

java中方法调用

JAVA中方法的调用[基础] 一.调用本类中的方法 方法一.被调用方法声明为static ,可以在其他方法中直接调用.示例代码如下: public class HelloWord { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String str="HelloWord!"; int a=0; int b=a+1; int result=

从java main方法说开去

刚刚接触java语言时,接触的便为一个java main方法.我们知道这样程序就可以运行了,但是程序是怎么运行起来的我们却不知道. 众所周知,当执行一个java程序时,首先会启动一个JVM虚拟机进程,当程序执行完时,JVM进程则消亡.其他导致JVM进程消亡的还有以下情况: System.exit(int)方法,执行该方法时,虚拟机腿粗好.int参数为状态码,为0时,正常退出:若不为0,则异常退出. 遇到异常或错误时.若在程序过程中遇到异常时,不作处理会一直抛出异常到main函数,若main函数也

Java变量方法初始化顺序

面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量, 构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果.这实际上是在考查我们对于继承情况下类的初始化顺序的了解. 我们大家都知道,对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是 (静态变量.静态初始化块)>(变量.初始化块)>构造器. 我们也可以通过下面的测试代码来验证这一点: 父类--静态变量 父类

Java的方法参数-想想挺有趣的问题

一直认为Java的方法参数都是传递值,调用后对本身不影响. Java不存在C/C++中的指针,在快速排序中,传入的数组,却发生了值的改变.由此引发的思考: //为方便举例,以下为部分快速排序伪代码 传入的数组,在递归中,数组值被操作. void quickSort(int s[], int l, int r){ if (l < r){ quickSort(s, l, i - 1); quickSort(s, i + 1, r); } } 结论:Java方法参数中传递的是值,在参数是引用类型(如数

07 java main方法

1.问题:Java main方法为什么是  public static void main(String[] args)??? 序号 场景 编译 运行 解释 1 public修改为private protected或者去掉 正常 Main Method not public 只有当main方法在公有级别上时才对JVM可见,所以需要使用public修饰 2 去掉static Exception in thread "main" java.lang.NoSuchMethodError:ma

RMI - Java远程方法调用

一.入门篇 Java RMI指的是远程方法调用(Remote Method Invocation). 它是一种机制, 能够让不同操作系统之间程序实现方法调用. 比如: 一台电脑上的Java程序可以通过RMI调用另一台电脑上的方法(EJB底层就是使用RMI). 二.RMI和webservice RMI是在TCP协议上传递可序列化的Java对象, 只能用在Java虚拟机上, 客户端和服务端必须都是Java. webservice是在http协议上传递xml文件, 它与语言和平台无关, 可以在异构系统

几种任务调度的 Java 实现方法与比较

几种任务调度的 Java 实现方法与比较 综观目前的 Web 应用,多数应用都具备任务调度的功能.本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,并对其优缺点进行比较,目的在于给需要开发任务调度的程序员提供有价值的参考. 前言 任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务.本文由浅入深介绍四种任务调度的 Java 实现: Timer ScheduledExecutor 开源工具包 Qua

java中方法的重载与重写的区别

JAVA中方法的重载与重写 1)  方法的的参数上看:重载后的方法与源方法在参数的类型以参数列表的顺序上会发生改变,而重写后的方法在参数的数据类型与参数列表的顺序不会发生改变 2)原方法是否对被覆盖:重载后的方法不会覆盖原方法,而重写后的方法会覆盖父类中的方法,调用时也只会调用重写后的方法. 3)调用方法的对象上:重载后的方法被调用时,调用对象不同时,调用的方法不同,产生的结果也不同:而重写后的方法被调用时,无论调用的对象是父类或者子类的对象,调用的方法相同,产生的结果也一样