今天就跟大家聊聊有關(guān)java中怎么利用ini4j修改ini配置文件,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了黃平免費建站歡迎大家使用!
定義:ini文件主要由三部分構(gòu)成,paramaters、section和comment組成,其中paramaters由鍵值對構(gòu)成,用來存儲數(shù)據(jù),section是一個區(qū)塊,每個區(qū)塊下有所屬的鍵值對,comment是注釋,對paramaters和section進(jìn)行標(biāo)注和解釋。
org.ini4j
ini4j
0.5.4
@Data
@AllArgsConstructor
@NoArgsConstructor
public class IniFileEntity {
private String section;
private String key;
private String value;
}
//我把這個寫在了工具類里面(Ini4jUtils)
public static boolean creatIniFile(String filePath,List filecontent) throws IOException {
File file = new File(filePath);
if(file.exists()){
return false;
}
file.createNewFile();
Ini ini = new Ini();
ini.load(file);
//將文件內(nèi)容保存到ini對象中
filecontent.stream().forEach((entity)->{
ini.add(entity.getSection(),entity.getKey(),entity.getValue()== null ? "": entity.getValue());
});
//將文件內(nèi)容保存到文件中
ini.store(file);
return true;
}
// 測試
@Test
public void test(){
List list = Arrays.asList(new IniFileEntity("ldap","ip","1.1.1.1"),
new IniFileEntity("ldap","ipPort","8567"),
new IniFileEntity("test","isUsed","true"));
System.out.println(Ini4jUtils.creatIniFile("D:\\abc\\test.ini",list));
}
/**
* 存儲文件中的內(nèi)容
*/
@Data
public class Ini4jFileVo {
private String ip;
private String ipPort;
private String isUsed;
}
/**
* 讀取ini文件的內(nèi)容
* @param iniFile ini文件
* @param fileContent ini文件中的key對應(yīng)文件中的section,value對應(yīng)i你文件section下的一個或多個key值
* @return
* @throws IOException
* @throws NoSuchFieldException
* @throws IllegalAccessException
*/
public static Ini4jFileVo readIniFile(File iniFile, Map> fileContent) throws IOException, NoSuchFieldException, IllegalAccessException {
Ini4jFileVo fileVo = new Ini4jFileVo();
Ini ini = new Ini();
ini.load(iniFile);
Section section = null;
Field field = null;
for(String key : fileContent.keySet()){
section = ini.get(key);
for (String value: fileContent.get(key)) {
field = fileVo.getClass().getDeclaredField(value);
field.setAccessible(true);
field.set(fileVo, section.get(value));
}
}
/**
* 這個是簡略版的
* Section section = ini.get("ldap");
* fileVo.setIp(section.get("ip"));
* fileVo.setIpPort(section.get("port" ));
*
* section = ini.get("test");
* fileVo.setIsUsed(section.get("isUsed"));
*/
return fileVo;
}
//測試
@Test
public void testReadFile(){
File file = new File("D:\\abc\\test.ini");
Map> fileContent = new HashMap<>();
fileContent.put("ldap",Arrays.asList("ip","ipPort"));
fileContent.put("test",Arrays.asList("isUsed"));
Ini4jFileVo fileVo = Ini4jUtils.readIniFile(file,fileContent);
System.out.println(fileVo);
}
//打印結(jié)果----Ini4jFileVo(ip=1.1.1.1, ipPort=8567, isUsed=true)
/**
* 修改文件內(nèi)容
* @param iniFile ini文件
* @param updateData 更新的數(shù)據(jù)
* @throws IOException
*/
public static void updateIniFile(File iniFile,Map> updateData) throws IOException {
Ini ini = new Ini();
ini.load(iniFile);
Section section = null;
Map dataMap = null;
for (String sect : updateData.keySet()){
section = ini.get(sect);
dataMap = updateData.get(sect);
for (String key : dataMap.keySet()){
section.put(key,dataMap.get(key) == null ? "" :
dataMap.get(key));
}
}
ini.store(iniFile);
}
@Test
public void testUpdateFile(){
//修改
File file = new File("D:\\abc\\test.ini");
Map> updateData = new HashMap<>();
Map ldap = new
HashMap<>();
ldap.put("ip","8.8.8.8");
updateData.put("ldap",ldap);
Ini4jUtils.updateIniFile(file,updateData);
Map> fileContent = new HashMap<>();
fileContent.put("ldap",Arrays.asList("ip","ipPort"));
fileContent.put("test",Arrays.asList("isUsed"));
Ini4jFileVo fileVo = Ini4jUtils.readIniFile(file,fileContent);
System.out.println(fileVo);
}
//測試結(jié)果----Ini4jFileVo(ip=8.8.8.8, ipPort=8567, isUsed=true)
看完上述內(nèi)容,你們對java中怎么利用ini4j修改ini配置文件有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。