JAVA中如何重新加载.properties文件,使其他引用实时改变?

JAVA中如何重新加载.properties文件,使其他引用实时改变?,第1张

       * Spring 提供的 PropertiesLoaderUtils 允许您直接通过基于类路径的文件地址加载属性资源

      

         * 最大的好处就是:实时加载配置文件,修改后立即生效,不必重启

        

         */

        private static void springUtil(){

                Properties props = new Properties()

                while(true){

                        try {

                                props=PropertiesLoaderUtils.loadAllProperties("message.properties")

                                for(Object key:props.keySet()){

                                        System.out.print(key+":")

                                        System.out.println(props.get(key))

                                }

                        } catch (IOException e) {

                                System.out.println(e.getMessage())

                        }

                        try {

                Thread.sleep(5000)

            } catch (InterruptedException e) {

                e.printStackTrace()

            }

                }

        }

我注意到你写的这句FileOutputStream fos=new FileOutputStream(resourceFile);运行时会马上覆盖掉原有的内容,因此你这句话应该移到将键值对载入完成后。

修改如下,测试通过。

/**

     * 新增或修改资源文件的内容

     * 

     * @param resourceFile

     *          资源文件(绝对路径+文件名,不需要.properties后缀)

     * @param key 键

     * @param value 值

     */

    public static void setString(String resourceFile, String key, String value){

        

        Properties prop = new Properties()        

        try {

            if(resourceFile.indexOf(".properties")==-1){

                resourceFile+=".properties"

            }

            FileInputStream fis = new FileInputStream(resourceFile)

            try {

                prop.load(fis)

                fis.close()

                prop.setProperty(key, value)

                FileOutputStream fos = new FileOutputStream(resourceFile)

                prop.store(fos, "Copyright Thcic")

                fos.close()

            } catch (IOException e) {

                e.printStackTrace()

                System.out.println("修改资源文件:"+resourceFile+"异常!msg:"+e.getMessage())

            }

            

        } catch (FileNotFoundException e) {

            e.printStackTrace()

            System.out.println("无法获得资源文件:" + resourceFile)

        }    

    }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11777238.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存