Java Properties

读取/写入:

Properties prop = new Properties();
String savePath = ResourceUtils.getURL("csmsystem/src/main/resources/sysconf").getPath();
String systemConf = savePath+"systemBackup_config.properties";
FileInputStream fis = new FileInputStream(systemConf);
//读取键值对
prop.load(fis);
prop.put("backup_dir",backupSet.getContents());
OutputStream os = new FileOutputStream(systemConf);
//持久化到属性文件中
prop.store(os,"Update backup_dir value");
if(null!=fis){
   fis.close();
 }
 if(null!=os){
    os.close();
 }

 

load源码:就是把文件格式化成map

private void load0 (LineReader lr) throws IOException {
        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++;
            }
            String key = loadConvert(lr.lineBuf, 0, keyLen, convtBuf);
            String value = loadConvert(lr.lineBuf, valueStart, limit - valueStart, convtBuf);
            put(key, value);
        }
    }
}
posted @ 2020-01-10 16:16  忧伤还是快乐EL  阅读(215)  评论(0编辑  收藏  举报