我想更改一个ini文件部分中的键的条目。我使用了ini4j库。所以我写了下面的代码。我可以更改条目,但也有我不想更改的其他内容:
- 将";"替换为"#",表示注释行
- 在部分和注释之间添加空行
那我怎么解呢?
这是我所期望的:
[section1]
key1=40
key2=30
[section2]
key1=10
key2=20
;section3
[section3]
key1=10
key2=20
这是编辑后的文件:
[section1]
key1=40
key2=30
[section2]
key1=10
key2=20
#section3
[section3]
key1=10
key2=20
我代码:public static void setEntry(String filePath, String fileName, String sectionName, String keyName, String entry)
throws IOException {
String path = filePath.concat(fileName);
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream(path);
Ini ini = new Ini(inputStream);
ini.getConfig().setStrictOperator(true);
Section section = ini.get(sectionName);
if (section != null) {
if (section.containsKey(keyName)) {
section.put(keyName, entry);
}
else {
section.add(keyName, entry);
}
}
else {
section = ini.add(sectionName);
section.add(keyName, entry);
}
File iniFile = new File(path);
ini.store(iniFile);
}
catch (IOException e) {
e.printStackTrace();
}
finally {
inputStream.close();
}
}
是否有办法改变默认的注释字符?
显然,即使ini4j可以读取;
和#
的注释,当您必须将它们写入ini文件时,它也不会保存这些注释。
如果您检查ini4j项目的AbstractFormatter
类,您可以看到唯一的注释操作符在写入时是#
,如果您有权访问源代码,您可以使用自定义注释操作符更改它,并且应该工作。
abstract class AbstractFormatter implements HandlerBase
{
private static final char OPERATOR = '=';
private static final char COMMENT = '#'; // <--- change this to ';'
...
对于空行,它们只是美学。同样,如果您可以访问源代码,您可以自己编辑它(注释这一行和这一行?),但我想如果您只是在此库生成后重新格式化您的ini文件并删除所有空行会更容易。