登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

健忘的日子

....只能珍藏

 
 
 

日志

 
 

js操作.ini 配置文件  

2010-09-13 11:03:44|  分类: HTML & JS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.文件内容(2ini.js)
function IniStruct()
{
this.Name = new String();
this.Attribute = new Object();
this.setName = function(Name)
{
    Name = Name.toString();
    var re = /^[^\s]+$/;
    if(!re.test(Name))
    {
      return false;
    }
    else
    {
      this.Name = Name;
      return true;
    }
}
this.setAttribute = function(AttributeName,AttributeValue)
{
    AttributeName = AttributeName.toString();
    AttributeValue = AttributeValue.toString();
    var reforName = /^\w+$/i;
    var reforValue = /^[^\s]*$/;
    if(!reforName.test(AttributeName) || !reforValue.test(AttributeValue))
    {
      return false;
    }
    else
    {
      this.Attribute[AttributeName] = AttributeValue;
      return true;
    }
}
this.getAttribute = function(AttributeName)
{
    var reforName = /^\w+$/i;
    if(!reforName.test(AttributeName))
    {
      return false;
    }
    else
    {
      return this.Attribute[AttributeName];
    }
}
this.toString = function()
{
    var Str = new String();
    Str += "[" + this.Name + "]\n";
    for(var p in this.Attribute)
    {
      Str += p + "=" + this.Attribute[p] + "\n";
    }
    return Str;
}
this.getArr = function()
{
    var Arr = new Array();
    Arr[0] = "[" + this.Name + "]";
    var i = 1;
    for(var p in this.Attribute)
    {
      Arr[i++] = p + "=" + this.Attribute[p];
    }
    return Arr;
}
}

function IniCtrl()
{
this.FilePath = new String();
this.fso = new ActiveXObject("Scripting.FileSystemObject");
this.file = null;
this.IsOpen = false;
this.IniStruct = null;
this.Struct = null;
this.FilePath = null;
this.Close = function()
{
    if(this.file != null)
    {
      this.file.Close();
    }
    this.IniStruct = null;
    this.file = null;
    this.FilePath = null;
    this.IsOpen = false;
}
this.Open = function(FilePath)
{
    FilePath = FilePath.toString();
    var Re = /^.+\.ini$/i;
    if(!Re.test(FilePath))
    {
      alert("文件名出错,后缀名应该为.ini");
      this.Close();
      return false;
    }
    else
    {
      if(!this.fso.FileExists(FilePath))
      {
        alert("文件不存在");
        this.Close();
        return false;
      }
      else
      {
        this.Close();
        this.file = this.fso.OpenTextFile(FilePath,1,false);
        this.IsOpen = true;
        if(!this.Init())
        {
          return false;
        }
        this.FilePath = FilePath;
        return true;
      }
    }
}
this.Create = function(FilePath)
{
    FilePath = FilePath.toString();
    var Re = /^.+\.ini$/i;
    if(!Re.test(FilePath))
    {
      alert("文件名出错,后缀名应该为.ini");
      this.Close();
      return false;
    }
    else
    {
      if(this.fso.FileExists(FilePath))
      {
        alert("文件已经存在");
        this.Close();
        return false;
      }
      else
      {
        try
        {
          this.Close();
          this.file = this.fso.CreateTextFile(FilePath, 2,false);
          this.IsOpen = true;
          this.FilePath = FilePath;
          return true;
        }
        catch(ex)
        {
          alert("无法新建文件,可能磁盘已经满或者文件名格式不正确");         
          this.Close();
          return false;
        }
      }
    }
}
this.Init = function()
{
    if(!this.IsOpen)
    {
      alert("文件还未打开");
      return false;
    }
    else
    {
      var tmpStr = new Array();     
      while(!this.file.AtEndOfStream)
      {
        tmpStr[tmpStr.length] = this.file.ReadLine();
      }
      var tmpStruct = null;
      this.IniStruct = new Array();
      var At = 0;
      var reForSet = /^\[([^\s]+)\]$/i;
      var reForAtt = /^(\w+)=(.*)/i;
      var Name = new String();
      var i = 0;
      var AttName = null;
      var AttValue = null;
      while(i < tmpStr.length)
      {
        if(reForSet.test(tmpStr[i]))
        {
          At = this.IniStruct.length;
          this.IniStruct[At] = new IniStruct();
          tmpStruct = this.IniStruct[At];
          Name = tmpStr[i].replace(reForSet,"$1");
          if(!tmpStruct.setName(Name))
          {
            this.IniStruct.length = At;
            tmpStruct = (At == 0) ? null : this.IniStruct[At - 1];
          }
        }
       
        if(reForAtt.test(tmpStr[i]) && (tmpStruct != null))
        {
          AttName = tmpStr[i].replace(reForAtt,"$1");
          AttValue = tmpStr[i].replace(reForAtt,"$2");
          tmpStruct.setAttribute(AttName,AttValue);
        }
        i++;
      }
     
      return true;
    }
}
this.select = function(Name)
{
    if(this.IniStruct == null)
    {
      return false;
    }
    else
    {
      for(var i = 0; i < this.IniStruct.length; i++)
      {
        if(this.IniStruct[i].Name == Name)
        {
          this.Struct = this.IniStruct[i];
          return true;
        }
      }
      this.Struct = null;
      return false;
    }
}
this.setAttribute = function(AttributeName,AttributeValue)
{
    if(this.Struct == null)
    {
      return false;
    }
    else
    {
      return this.Struct.setAttribute(AttributeName,AttributeValue);
    }
}
this.getAttribute = function(AttributeName)
{
    if(this.Struct == null)
    {
      return false;
    }
    else
    {
      return this.Struct.getAttribute(AttributeName);
    }
}
this.save = function()
{
    if(!this.IsOpen)
    {
      alert("文件还未打开");
      return false;
    }
    else
    {
      try
      {
        var tmpfso = new ActiveXObject("Scripting.FileSystemObject");
        var tmpName = tmpfso.GetTempName();
        var f = tmpfso.CreateTextFile(tmpName,2,false);
        var FilePath = this.FilePath;
        var Arr = null;
        //alert(this.IniStruct.length);
        for(var i = 0; i < this.IniStruct.length; i++)
        {
          Arr = this.IniStruct[i].getArr();
          for(var t = 0; t < Arr.length; t++)
          {
            f.WriteLine(Arr[t]);
          }
        }
        this.Close();
        tmpfso.DeleteFile(FilePath);
        tmpfso.CopyFile(tmpName,FilePath);
       
        f.Close();
        tmpfso.DeleteFile(tmpName);
        this.Open(FilePath,1);
        return true;
      }
      catch(ex)
      {
        alert("无法保存");
        return false;
      }
    }
}
this.AddSetting = function(SetName)
{
    if(!this.select(SetName))
    {
      var tmpStruct = new IniStruct();
      if(!tmpStruct.setName(SetName))
      {
        return false;
      }
      else
      {
        if(this.IniStruct == null)
        {
          this.IniStruct = new Array();
        }
        this.IniStruct[this.IniStruct.length] = tmpStruct;
        return true;
      }
    }
}
}
------------------------------------

2、测试:
<html>
<script language="JavaScript" type="text/javascript" src="2ini.js"></script>
<script>

var Ini = new IniCtrl();
//Ini.Create("c:\\jstest\\setting.ini");
Ini.Open("c:\\jstest\\setting.ini");

Ini.AddSetting("Admin");

//配置增加属性
Ini.select("Admin");
Ini.setAttribute("user","aaaaaa");
Ini.setAttribute("pass","123123");

//保存配置
Ini.save();
Ini.Close();
</script>
</html>

  评论这张
 
阅读(1937)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018