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