欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

往properties配置文件中写入数据/更新数据

程序员文章站 2024-03-07 14:41:09
...

1.向properties文件中写入数据

写入配置文件的基本步骤是:

1. 实例化一个Properties对象;

2. 获取一个文件输出流对象(FileOutputStream);

3. 调用Properties对象的setProperty(String key,String value)方法设置要存入的键值对放入文件输出流中;

4. 调用Properties对象的store(OutputStream out,String comments)方法保存,comments参数是注释;

示例代码如下:

public static void writeToProperties(){
        //1.先实例化一个Properties对象
        Properties properties = new Properties();
        try {
            //2.创建一个输出流对象,选择正确的目标文件路径(注意:该配置文件放在src目录下)
            FileOutputStream fos = new FileOutputStream("src/test2.properties",true);//这里true表示追加,如果不设为true的话,会将原文件清空后,重新添加,切记!!!
            OutputStreamWriter opw = new OutputStreamWriter(fos,"utf-8");//引入Writer,可以明确该输出流的字符集,确保写入配置文件的中文编码正确
            
            //3.将需要写入的属性内容通过set方法,存入properties对象中
            properties.setProperty("testSong","Someone Like You");
            properties.setProperty("testQQ","只能说我认了,也许是你怕了");
            
            //4.调用properties的存储方法
            properties.store(opw,"测试用数据");

            //5.关闭资源
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

2.更新配置文件中的value值

public static void updatePropertiess(Map<String,String> keyValueMap){   
   //1.先实例化一个Properties对象
    Properties properties = new Properties();
    String path = PropertiesAction.class.getClassLoader().getResource("test2.properties").getPath();
    System.out.println(path);//输出数据为:/E:/Idea_workspace/JFinal/TestSomething/out/production/TestSomething/test2.properties
    //注意:这里获取到的路径,为文件编译之后的路径,即class路径,如果用path来获取File文件的话,则修改的为classes中的文件,编译前的原文件是没有改变的,所以上服务器之后,应该使用path,才可以改变需要修改的文件

        //2.新建一个输入流和输出流,用来读取和写入文件
    InputStreamReader reader = null;
    OutputStreamWriter writer = null;
    try {
        //3.读取到配置文件,并加载在Properties中
        //reader = new InputStreamReader(new FileInputStream(path),"utf-8"); 读取的为classes中的配置文件
        reader = new InputStreamReader(new FileInputStream("src/test2.properties"),"utf-8");    
        properties.load(reader);
        System.out.println("testWrite:" + properties.get("testWrite"));

        //4.将需要修改的键值对,或者新增的键值对,写入到properties中(此处与直接追加操作相同)
        writer = new OutputStreamWriter(new FileOutputStream("src/test2.properties"),"utf-8");
        for (String key: keyValueMap.keySet()) {
            properties.setProperty(key,keyValueMap.get(key));
        }
        //5.调用properties中的存储方法
        properties.store(writer,"测试数据");

        //6.关闭资源
        reader.close();
        writer.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            reader.close();
            writer.close();
        } catch (IOException e) {
             e.printStackTrace();
        }
    }
}

配置文件分布如下图所示:

往properties配置文件中写入数据/更新数据往properties配置文件中写入数据/更新数据

转载参考:https://blog.csdn.net/qq_37725650/article/details/79744847