JAVA按顺序读取properties文件
我个人根据源代码增加了一点东西实现的顺序读取properties文件
就是增加了一个LinkedHashMap,使用时调用getPropertiesMap输出即可。
public class OrderedProperties extends Properties {
private Map<String, String> propertiesMap = new LinkedHashMap<>();
public Map<String, String> getPropertiesMap(){
return propertiesMap;
}
@Override
public synchronized void load(Reader reader) throws IOException {
LineReader lr = new LineReader(reader);
char[] convtBuf = new char[1024];
int limit;
int keyLen;
int valueStart;
char c;
boolean hasSep;
boolean precedingBackslash;
while ((limit = lr.readLine()) >= 0) {
c = 0;
keyLen = 0;
valueStart = limit;
hasSep = false;
//System.out.println("line=<" + new String(lineBuf, 0, limit) + ">");
precedingBackslash = false;
while (keyLen < limit) {
c = lr.lineBuf[keyLen];
//need check if escaped.
if ((c == '=' || c == ':') && !precedingBackslash) {
valueStart = keyLen + 1;
hasSep = true;
break;
} else if ((c == ' ' || c == '\t' || c == '\f') && !precedingBackslash) {
valueStart = keyLen + 1;
break;
}
if (c == '\\') {
precedingBackslash = !precedingBackslash;
} else {
precedingBackslash = false;
}
keyLen++;
}
while (valueStart < limit) {
c = lr.lineBuf[valueStart];
if (c != ' ' && c != '\t' && c != '\f') {
if (!hasSep && (c == '=' || c == ':')) {
hasSep = true;
} else {
break;
}
}
valueStart++;
}

这篇博客介绍了如何在Java中创建一个OrderedProperties类,继承自Properties,通过使用LinkedHashMap来保持读取properties文件时的顺序。在加载文件时,通过调用load方法,从指定路径加载并解析properties文件,然后将键值对按顺序存入map。最后,内容提到了在加载过程中处理异常的方式。
最低0.47元/天 解锁文章
3974

被折叠的 条评论
为什么被折叠?



