zl程序教程

您现在的位置是:首页 >  后端

当前栏目

c#实现ini文件读写类分享

c#文件 实现 分享 读写 ini
2023-06-13 09:15:14 时间

复制代码代码如下:


///<summary>
   ///读写INI文件的类。
   ///</summary>
   publicclassINIHelper
   {
       //读写INI文件相关。
       [DllImport("kernel32.dll",EntryPoint="WritePrivateProfileString",CharSet=CharSet.Ansi)]
       publicstaticexternlongWritePrivateProfileString(stringsection,stringkey,stringval,stringfilePath);
       [DllImport("kernel32.dll",EntryPoint="GetPrivateProfileString",CharSet=CharSet.Ansi)]
       publicstaticexternintGetPrivateProfileString(stringsection,stringkey,stringdef,StringBuilderretVal,intsize,stringfilePath);

       [DllImport("kernel32.dll",EntryPoint="GetPrivateProfileSectionNames",CharSet=CharSet.Ansi)]
       publicstaticexternintGetPrivateProfileSectionNames(IntPtrlpszReturnBuffer,intnSize,stringfilePath);

       [DllImport("KERNEL32.DLL",EntryPoint="GetPrivateProfileSection",CharSet=CharSet.Ansi)]
       publicstaticexternintGetPrivateProfileSection(stringlpAppName,byte[]lpReturnedString,intnSize,stringfilePath);


       ///<summary>
       ///向INI写入数据。
       ///</summary>
       ///<PARAMname="Section">节点名。</PARAM>
       ///<PARAMname="Key">键名。</PARAM>
       ///<PARAMname="Value">值名。</PARAM>
       publicstaticvoidWrite(stringSection,stringKey,stringValue,stringpath)
       {
           WritePrivateProfileString(Section,Key,Value,path);
       }


       ///<summary>
       ///读取INI数据。
       ///</summary>
       ///<PARAMname="Section">节点名。</PARAM>
       ///<PARAMname="Key">键名。</PARAM>
       ///<PARAMname="Path">值名。</PARAM>
       ///<returns>相应的值。</returns>
       publicstaticstringRead(stringSection,stringKey,stringpath)
       {
           StringBuildertemp=newStringBuilder(255);
           inti=GetPrivateProfileString(Section,Key,"",temp,255,path);
           returntemp.ToString();
       }

       ///<summary>
       ///读取一个ini里面所有的节
       ///</summary>
       ///<paramname="sections"></param>
       ///<paramname="path"></param>
       ///<returns></returns>
       publicstaticintGetAllSectionNames(outstring[]sections,stringpath)
       {
           intMAX_BUFFER=32767;
           IntPtrpReturnedString=Marshal.AllocCoTaskMem(MAX_BUFFER);
           intbytesReturned=GetPrivateProfileSectionNames(pReturnedString,MAX_BUFFER,path);
           if(bytesReturned==0)
           {
               sections=null;
               return-1;
           }
           stringlocal=Marshal.PtrToStringAnsi(pReturnedString,(int)bytesReturned).ToString();
           Marshal.FreeCoTaskMem(pReturnedString);
           //useofSubstringbelowremovesterminatingnullforsplit
           sections=local.Substring(0,local.Length-1).Split("\0");
           return0;
       }

       ///<summary>
       ///得到某个节点下面所有的key和value组合
       ///</summary>
       ///<paramname="section"></param>
       ///<paramname="keys"></param>
       ///<paramname="values"></param>
       ///<paramname="path"></param>
       ///<returns></returns>
       publicstaticintGetAllKeyValues(stringsection,outstring[]keys,outstring[]values,stringpath)
       {
           byte[]b=newbyte[65535];

           GetPrivateProfileSection(section,b,b.Length,path);
           strings=System.Text.Encoding.Default.GetString(b);
           string[]tmp=s.Split((char)0);
           ArrayListresult=newArrayList();
           foreach(stringrintmp)
           {
               if(r!=string.Empty)
                   result.Add(r);
           }
           keys=newstring[result.Count];
           values=newstring[result.Count];
           for(inti=0;i<result.Count;i++)
           {
               string[]item=result[i].ToString().Split(newchar[]{"="});
               if(item.Length==2)
               {
                   keys[i]=item[0].Trim();
                   values[i]=item[1].Trim();
               }
               elseif(item.Length==1)
               {
                   keys[i]=item[0].Trim();
                   values[i]="";
               }
               elseif(item.Length==0)
               {
                   keys[i]="";
                   values[i]="";
               }
           }

           return0;
       }

   }