日期:2014-05-20  浏览次数:20630 次

关于java读取配置文件的一个问题
关于java读取配置文件的一个问题
我的web应用程序需要读取一个配置文件,有很多行初始化的数据.

InputStream   is   =Thread.currentThread().getContextClassLoader().getResourceAsStream( "book.csv ");
List ls=getData(is);

但是当我每次修改book.csv里面的属性时,需要重启才能读到修改后的值,
这个getContextClassLoader().getResourceAsStream是放在内存的嘛?
如何能够修改book.csv不重启就能读到,
如何清除这些放内存的东西,
谢谢....


------解决方案--------------------
如果这个文件与当前类的文件放在同一个包下的话,我原来是这样做的:

<这个类的类名> .class.getResourceAsStream( "book.cvs ");
------解决方案--------------------
去配置文件有的时候是一个很棘手的问题,特别是上面几位兄台提到的web开发中。
用classloader()就可以免去好多的找不到文件的麻烦。
因为类加载器会在同一个加载点上开始查找配置文件。
如果你的配置文件在包
demo.config下面,文件是config.properties的话
那么你的流就可以直接使用getResourceAsStream( "//demo//config//config.properties "),就可以了。
如果你直接使用FileInputStream的话,你的文件路径就不好定义。当然,不是不能实现,是会很麻烦。
------解决方案--------------------
在web应用中的当前路径好像是web server启动的目录,我不知道是不是都这样,我试过在web程序中输出一个文件,在Tomcat中,结果那个文件被写到%TOMCAT_HOME%\bin\下面了

最好还是不要在web应用中写本地路径