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

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();
        }
    }
}

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

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

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值