Java動態(tài)替換properties文件中鍵值方式
Java動態(tài)替換properties文件中鍵值
最近遇到需要動態(tài)替換json文件中的值的需求,類比在 Java 中讀取 properties 文件,并根據(jù)傳入的多個參數(shù)替換相應的 key 的屬性值,基于使用 java.util.Properties 類來實現(xiàn)。
實現(xiàn)
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
import java.util.Properties;
public class PropertiesModifier {
public static void main(String[] args) {
// Properties 文件路徑
String propertiesFilePath = "xxxx_file.properties";
// 要修改的多個 key 及其新值
Map<String, String> keyValues = Map.of(
"key1", "newValue1",
"key2", "newValue2"
);
try {
// 調(diào)用方法來修改 properties 文件中的多個 key 的值
modifyProperties(propertiesFilePath, keyValues);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 修改 properties 文件中指定的多個 key 的值
*
* @param propertiesFilePath properties 文件路徑
* @param keyValues 要修改的 key 及其新值的 Map
* @throws IOException 如果文件讀取或?qū)懭霑r出現(xiàn)錯誤
*/
public static void modifyProperties(String propertiesFilePath, Map<String, String> keyValues) throws IOException {
// 創(chuàng)建 Properties 對象,用于處理 properties 文件
Properties properties = new Properties();
// 讀取 properties 文件
try (InputStream input = new FileInputStream(propertiesFilePath)) {
properties.load(input);
}
// 遍歷要修改的 key 值,并更新到 Properties 對象中
for (Map.Entry<String, String> entry : keyValues.entrySet()) {
String key = entry.getKey();
String newValue = entry.getValue();
// 如果 key 存在,則替換其值
if (properties.containsKey(key)) {
properties.setProperty(key, newValue);
System.out.println("Updated key: " + key + ", New Value: " + newValue);
} else {
System.out.println("Key not found: " + key);
}
}
// 將修改后的 Properties 對象寫回到文件中
try (OutputStream output = new FileOutputStream(propertiesFilePath)) {
properties.store(output, "Updated properties file");
}
// 輸出修改后的 properties 內(nèi)容
System.out.println("Modified Properties Content: " + properties);
}
}效果
- 修改前 properties 文件
database.url=jdbc:mysql://localhost:3306/mydb database.username=root database.password=secret app.name=MyApplication
- 待修改數(shù)據(jù)
Map<String, String> keyValues = Map.of(
"database.username", "admin",
"app.name", "ICQQ"
);- 修改后 properties 文件
database.url=jdbc:mysql://localhost:3306/mydb database.username=admin database.password=secret app.name=ICQQ
總結(jié)
通過 Properties 類讀取 properties 文件,并根據(jù)傳入的 Map 動態(tài)地替換多個鍵值對。
該方法靈活且高效,適用于需要對配置文件進行動態(tài)修改的場景。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java運行時數(shù)據(jù)區(qū)域和類結(jié)構(gòu)詳解
這篇文章主要介紹了java運行時數(shù)據(jù)區(qū)域和類結(jié)構(gòu),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Java 垃圾回收機制詳解(動力節(jié)點Java學院整理)
在系統(tǒng)運行過程中,會產(chǎn)生一些無用的對象,這些對象占據(jù)著一定的內(nèi)存,如果不對這些對象清理回收無用對象的內(nèi)存,可能會導致內(nèi)存的耗盡,所以垃圾回收機制回收的是內(nèi)存。下面通過本文給大家詳細介紹java垃圾回收機制,一起學習吧2017-02-02
Java Fluent Mybatis實戰(zhàn)之構(gòu)建項目與代碼生成篇下
Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國內(nèi)又以Mybatis用的多,基于mybatis上的增強框架,又有mybatis plus和TK mybatis等。今天我們介紹一個新的mybatis增強框架 fluent mybatis2021-10-10
Java簡單實現(xiàn)session保存到redis的方法示例
這篇文章主要介紹了Java簡單實現(xiàn)session保存到redis的方法,結(jié)合實例形式分析了Java將session存入redis緩存服務器的相關(guān)設(shè)置、實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下2018-05-05
Spring注解中@Configuration和@Component到底有啥區(qū)別
之前一直搞不清@Component和@Configuration這兩個注解到底有啥區(qū)別,一直認為被這兩修飾的類可以被Spring實例化嘛,最近終于弄明白了,這篇文章主要給大家介紹了關(guān)于Spring注解中@Configuration和@Component到底有啥區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-04-04
SpringBoot部署到外部Tomcat無法注冊到Nacos服務端的解決思路
這篇文章主要介紹了SpringBoot部署到外部Tomcat無法注冊到Nacos服務端,本文給大家分享完美解決思路,結(jié)合實例代碼給大家講解的非常詳細,需要的朋友可以參考下2023-03-03

