JS读取INI文件

来源:互联网 发布:数据库置疑的原因 编辑:程序博客网 时间:2024/06/06 09:39
//传入Ini文件路径,返回Json对象
function ParseInIFileToJson(strIniFilePath)
{
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var f = fso.OpenTextFile(strIniFilePath,1); //根据文件路径
    var strFileAllValue = f.ReadAll();  //读取文件中的所有内容
    var JsonValue = ParseINIString(strFileAllValue); //调用接口获取Json对象
    f.close(); //进行文件关闭操作
    return JsonValue;  //返回Json对象

}

//进行Ini文件内容的解析,解析成Json格式

function ParseINIString(data)
{
    //利用正则表达式进行ini文件每行数据的匹配
    var regex = {
        section: /^\s*\[\s*([^\]]*)\s*\]\s*$/,  
        param: /^\s*([\w\.\-\_]+)\s*=\s*(.*?)\s*$/,
        comment: /^\s*;.*$/
    };
    var JsonValue = {};
    var lines = new Array();
    lines = data.split(/\r\n|\r|\n/);
    //将字符串进行根据回车拆分为字符串数组  
    var section = null;
    //对字符串数组进行正则表达式匹配,来组装Json对象
    var iArraySize = lines.length;
    for(var i = 0; i < iArraySize; ++i)
    {
         line = lines[i];
        if(regex.comment.test(line))
        {
            //如果为注释的话,不进行操作
        }else if(regex.param.test(line))
        {
            var match = line.match(regex.param);
            if(section){
                JsonValue[section][match[1]] = match[2];
            }else{
                JsonValue[match[1]] = match[2];
            }
        }else if(regex.section.test(line))
        {
            var match = line.match(regex.section);
            JsonValue[match[1]] = {};
            section = match[1];
        }else if(line.length == 0 && section)
        {
            section = null;
        }
    }
    return JsonValue;
}
//根据Json对象和key值获取相关Ini文件中的值
function GetValueFromJsonByKey(JsonValue, key)
{
    var value = null; //返回值
    var keyValue = null; //临时存储当前key值
    var strKeyArray = new Array();
    strKeyArray = key.split('.');  //支持传入的key值样式: Key1.key2.key3
    var iKeyCount  = strKeyArray.length;
    if(iKeyCount > 0)
    {
        keyValue = strKeyArray[0];
        value = JsonValue[keyValue];
    }
    for(var iIndex = 1; iIndex < iKeyCount; ++iIndex)
    {
        keyValue = strKeyArray[iIndex];
        value = value[keyValue];
    }
    return value;

}

0 0
原创粉丝点击