读ini文件|vb 怎么读取ini文件

|

㈠ ini文件主要怎么用哪些程序可以读取ini文件

主要看你要用到哪里了。如下:Desktop.ini文件夹内使用可以更改背景,该文件夹内文件名称的字体颜色等等autorun,ini盘符内使用如上,但易感染某些特性病毒。boot.ini系统分区内使用,是作为系统引导文件。.ini程序应用的引导信息指定位置的传递等功能。双击打开,打开后可以直观的看到命令语句语法,能直接更改保存。打开它,系统默认是用记事本来打开的。

㈡ 请问怎么从INI文件中读出数据

Caption=ini->ReadString)"Form","Caption","DefaultCaption");TIniFile*ini;top=ini->ReadInteger("Form","Top",100);Read有三个参数,第一个给出ini文件的节,第二个参数给出需读的值;第三个参数是个缺省值,防止该节或值不在ini文件之中。

㈢ vb 怎么读取ini文件

为了方便用户使用和使系统具有灵活性,大多数-dows应用程序将用户所做的选择以及各种变化的系统信息记录在初始化(INI)文件中。因此,当系统的环境发生变化时,可以直接修改INI文件,而无需修改程序。由此可见,INI文件对系统功能是至关重要的。本文将介绍采用VisualBasicforWindows(下称VB)开发Windows应用程序时如何读写INI文件。INI文件是文本文件,由若干部分(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(keyword)和一个等号,每个关键词会控制应用程序某个功能的工作方式,等号右边的值(value)指定关键词的操作方式。其一般形式如下:[section1]keyword1=valuelkeyword2=value2……[section2]keyword1=value1keyword2=value2……其中,如果等号右边无任何内容(即value为空),那就表示Windows应用程序已为该关键词指定了缺省值,如果在整个文件中找不到某个关键词(或整个一部分),那同样表示为它们指定了缺省值。各个部分所出现的顺序是无关紧要的,在每一个部分里,各个关键词的顺序同样也无关紧要。读写INI文件通常有两种方式:一是在Windows中用"记事本"(Notepad)对其进行编辑,比较简单,无需赘述;二是由Windows应用程序读写INI文件,通常是应用程序运行时读取INI文件中的信息,退出应用程序时保存用户对运行环境的某些修改。关键词的值的类型多为字符串或整数型,应分两种情况读写。为了使程序具有可维护性和可移植性,最好把对INI文件的读写封装在一个模块(RWINI.BAS)中,在RWI-NI.BAS中构造GetIniS和GetIniN函数以及SetIniS和Se-tIniN过程,在这些函数和过程中需要使用WindowsAPI的"GetPrivateprofileString"、"GetPrivateProfileInt"和"WritePrivateProfileString"函数。RWINI.BAS模块的程序代码如下:在General-Declearation部分中声明使用到的WindowsAPI函数:Declare Function GetprivateprofileString Lib"Ker-nel"(ByVallpAppName As String,ByVallpKeyName As String,ByVallpDefault As String,ByVal lpRetrm-String As String,ByVal cbReturnString As Integer,ByVal Filename As String)As IntegerDeclare FunctionGetPrivatePfileInt Lib "Kernel"(ByVal lpAppName As String,ByVal lpKeyName As String,ByVal lpDefault As Integer,ByVal Filename As String)As IntegerDeclare Lib "Kernel"(ByVal lpApplicationName As String,ByVal lpKeyName As String,ByVal lpString As String,ByVal lplFileName As String)As IntegerFunction GetIniS(ByVal SectionName As String,ByVal KeyWord As String,ByVal DefString As String)As StringDim ResultString As String * 144,Temp As IntegerDims As String,i As IntegerTemp%=GetPrivateProfileString(SectionName,KeyWord,"",ResultString,144,AppProfileName())‘检索关键词的值IfTemp%>0Then‘关键词的值不为空s=""Fori=1To144IfAsc(Mid$(ResultString,I,1))=0ThenExitForElses=s&Mid$(ResultString,I,1)EndIfNextElseTemp%=WritePrivateProfilesString(sectionname,KeyWord,DefString,ppProfileName())‘将缺省值写入INI文件s=DefStringEndIfGetIniS=sEndFunctionFunctionGetIniN(ByValSectionNameAsString,ByValKeyWordAsString,ByValDefValueAsIneger)AsIntegerDimdAsLong,sAsStringd=DefValueGetIniN=GetPrivateProfileInt(SectionName,KeyWord,DefValue,ppProfileName())Ifd<>DefValueThens=""&dd=WritePrivateProfileString(SectionName,KeyWord,s,AppProfileName())EndIfEndFunctionSubSetIniS(ByValSectionNameAsString,BtVaKeyWordAsString,ByValValStrAsString)Dimres%res%=WritePrivateprofileString(SectionName,KeyWord,ValStr,AppProfileName())EndSubSubSetIniN(ByValSectionNameAsString,ByValKeyWordAsString,ByValValIntAsInteger)Dimres%,s$s$=Str$(ValInt)res%=WriteprivateProfileString(SectionName,KeyWord,s$,AppProfileName())EndSubSectionName为每一部分的标题,KeyWord为关键词,GetIniS和GetIniN中的DefValue为关键词的缺省值,SetIniS和SetIniN的ValStr和ValInt为要写入INI文件的关键词的值。为了能更好地说明如何使用以上函数和过程,下面举两个实例。实例1:开发应用程序通常要使用数据库和其它一些文件,这些文件的目录(包括路径和文件名)不应在程序中固定,而是保存在INI文件中,程序运行时由INI文件中读入。读入数据库文件的代码如下:DimDatabasenameAsStringDatabasename=GetIniS("数据库","职工","")IfDatabaseName=""ThenDatabaseName=InputBox("请输入数据库《职工》的目录"),App.Title)’也可通过"文件对话框"进行选择OnErrorResumeNextSetdb=OpenDatabas(DatabaseName)IfErr<>0ThenMsgBox"打开数据库失败!",MB-ICONSTOP,App.Title:GotoErrorProcessingElseSetIniS"数据库","职工",DatabaseNameEndIfOnErrorGoTo0……实例2:为了方便用户操作,有时需要保存用户界面的某些信息,例如窗口的高度和宽度等。装载窗体时,从INI文件中读入窗体高度和宽度,卸载窗体时将窗体当前高度和宽度存入INI文件,代码如下:Sub Form1_Load()……Forml.Height=GetIniN("窗体1","高度",6000)Form1.Width=GetIniN("窗体1","高度",4500)EndSub……Sub Form1_Unload()……SetIniN"窗体1","高度",Me.HeightSetIniN"窗体1,"宽度",Me.Width……End Sub

㈣ VB读写INI文件

'API函数的声明'ini配置文件Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As LongPrivate Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As LongPrivate Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long '自定义函数'读取/设置ini配置文件Private Function GetIniS(FilePath As String, SectionName As String, KeyWord As String, DefString As String) As String Dim ResultString As String * 255, Temp As Long Dim s As String, i As Integer Temp = GetPrivateProfileString(SectionName, KeyWord, "", ResultString, 255, FilePath) If Temp > 0 Then '关键词的值不为空 s = "" For i = 1 To 255 If Asc(Mid(ResultString, i, 1)) = 0 Then Exit For Else s = s & Mid(ResultString, i, 1) End If Next i Else If DefString <> "" Then '将缺省值写入INI文件 Temp = WritePrivateProfileString(SectionName, KeyWord, DefString, FilePath) s = DefString End If End If GetIniS = sEnd FunctionPrivate Function GetIniN(FilePath As String, SectionName As String, KeyWord As String, DefValue As Long) As Long Dim d As Long, s As String d = DefValue GetIniN = GetPrivateProfileInt(SectionName, KeyWord, DefValue, FilePath) 'If d <> DefValue Then ' s = CStr(d) ' d = WritePrivateProfileString(SectionName, KeyWord, s, FilePath) 'End IfEnd FunctionPrivate Sub SetIniS(FilePath As String, SectionName As String, KeyWord As String, ValStr As String) Dim res As Long res = WritePrivateProfileString(SectionName, KeyWord, ValStr, FilePath)End SubPrivate Sub SetIniN(FilePath As String, SectionName As String, KeyWord As String, ValLon As Long) Dim res As Long, s As String s = CStr(ValLon) res = WritePrivateProfileString(SectionName, KeyWord, s, FilePath)End Sub'读取过程Private Sub Command1_Click() Dim fname As String Dim SectionName As String, KeyWord As String, DefString As String, DefValue As Long Dim s As String, sValue As String Dim i As Integer, j As Integer Dim Result() As String fname = "……" '你所要读取的文件(包括其绝对路径) SectionName = "KeyName" '字段 KeyWord = "Key" '相同的部分 DefString = "???" '一般为空字符,我这里是用于区分Value1为空是是否继续进行用的 i = 0 j = -1 Do i = i + 1 s = KeyWord & CStr(i) sValue = GetIniS(fname, SectionName, KeyWord, DefString) If sValue <> DefString Then j = j + 1 ReDim Preserve Result(j) Result(j) = sValue Else Exit Do End If Loop End Sub你再结合自己的具体情况,修改下就行了

㈤ C# 读取ini文件

using System.Runtime.InteropServices; [DllImport("kernel32.dll")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32.dll")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); /// <summary> /// 写入INI文件 /// </summary> /// <param name=^Section^>节点名称</param> /// <param name=^Key^>关键字</param> /// <param name=^Value^>值</param> /// <param name=^filepath^>INI文件路径</param> static public void IniWriteValue(string Section, string Key, string Value, string filepath) { WritePrivateProfileString(Section, Key, Value, filepath); } /// <summary> /// 读取INI文件 /// </summary> /// <param name=^Section^>节点名称</param> /// <param name=^Key^>关键字</param> /// <param name=^filepath^>INI文件路径</param> /// <returns>值</returns> static public string IniReadValue(string Section, string Key, string filepath) { StringBuilder temp = new StringBuilder(255); int i = GetPrivateProfileString(Section, Key, "", temp,255, filepath); return temp.ToString(); } ini 文档格式路径假设为 D:/SETUP.ini [SQL] SVRName=192.168.1.11\SQL2005 读取实例 IniReadValue("SQL", "SVRName"," D:/SETUP.ini"); 这样读取出来的值是192.168.1.11\SQL2005 写的话类似 IniReadValue("SQL", "SVRName","你要写入的值"," D:/SETUP.ini"); 补充: using System; using System.IO; using System.Runtime.InteropServices; using System.Text; using System.Collections; using System.Collections.Specialized; namespace wuyisky{ /**//**/ /**//// /// IniFiles的类 /// public class IniFiles { public string FileName; //INI文件名 //声明读写INI文件的API函数 [DllImport("kernel32")] private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath); //类的构造函数,传递INI文件名 public IniFiles(string AFileName) { // 判断文件是否存在 FileInfo fileInfo = new FileInfo(AFileName); //Todo:搞清枚举的用法 if ((!fileInfo.Exists)) { //|| (FileAttributes.Directory in fileInfo.Attributes)) //文件不存在,建立文件 System.IO.StreamWriter sw = new System.IO.StreamWriter(AFileName, false, System.Text.Encoding.Default); try { sw.Write("#表格配置档案"); sw.Close(); } catch { throw (new ApplicationException("Ini文件不存在")); } } //必须是完全路径,不能是相对路径 FileName = fileInfo.FullName; } //写INI文件 public void WriteString(string Section, string Ident, string Value) { if (!WritePrivateProfileString(Section, Ident, Value, FileName)) { throw (new ApplicationException("写Ini文件出错")); } } //读取INI文件指定 public string ReadString(string Section, string Ident, string Default) { Byte[] Buffer = new Byte[65535]; int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), FileName); //必须设定0(系统默认的代码页)的编码方式,否则无法支持中文 string s = Encoding.GetEncoding(0).GetString(Buffer); s = s.Substring(0, bufLen); return s.Trim(); } //读整数 public int ReadInteger(string Section, string Ident, int Default) { string intStr = ReadString(Section, Ident, Convert.ToString(Default)); try { return Convert.ToInt32(intStr); } catch (Exception ex) { Console.WriteLine(ex.Message); return Default; } } //写整数 public void WriteInteger(string Section, string Ident, int Value) { WriteString(Section, Ident, Value.ToString()); } //读布尔 public bool ReadBool(string Section, string Ident, bool Default) { try { return Convert.ToBoolean(ReadString(Section, Ident, Convert.ToString(Default))); } catch (Exception ex) { Console.WriteLine(ex.Message); return Default; } } //写Bool public void WriteBool(string Section, string Ident, bool Value) { WriteString(Section, Ident, Convert.ToString(Value)); } //从Ini文件中,将指定的Section名称中的所有Ident添加到列表中 public void ReadSection(string Section, StringCollection Idents) { Byte[] Buffer = new Byte[16384]; //Idents.Clear(); int bufLen = GetPrivateProfileString(Section, null, null, Buffer, Buffer.GetUpperBound(0), FileName); //对Section进行解析 GetStringsFromBuffer(Buffer, bufLen, Idents); } private void GetStringsFromBuffer(Byte[] Buffer, int bufLen, StringCollection Strings) { Strings.Clear(); if (bufLen != 0) { int start = 0; for (int i = 0; i bufLen; i++) { if ((Buffer[i] == 0) && ((i – start) > 0)) { String s = Encoding.GetEncoding(0).GetString(Buffer, start, i – start); Strings.Add(s); start = i + 1; } } } } //从Ini文件中,读取所有的Sections的名称 public void ReadSections(StringCollection SectionList) { //Note:必须得用Bytes来实现,StringBuilder只能取到第一个Section byte[] Buffer = new byte[65535]; int bufLen = 0; bufLen = GetPrivateProfileString(null, null, null, Buffer, Buffer.GetUpperBound(0), FileName); GetStringsFromBuffer(Buffer, bufLen, SectionList); } //读取指定的Section的所有Value到列表中 public void ReadSectionValues(string Section, NameValueCollection Values) { StringCollection KeyList = new StringCollection(); ReadSection(Section, KeyList); Values.Clear(); foreach (string key in KeyList) { Values.Add(key, ReadString(Section, key, "")); } } /**/////读取指定的Section的所有Value到列表中, //public void ReadSectionValues(string Section, NameValueCollection Values,char splitString) //{ string sectionValue; // string[] sectionValueSplit; // StringCollection KeyList = new StringCollection(); // ReadSection(Section, KeyList); // Values.Clear(); // foreach (string key in KeyList) // { // sectionValue=ReadString(Section, key, ""); // sectionValueSplit=sectionValue.Split(splitString); // Values.Add(key, sectionValueSplit[0].ToString(),sectionValueSplit[1].ToString()); // } //} //清除某个Section public void EraseSection(string Section) { // if (!WritePrivateProfileString(Section, null, null, FileName)) { throw (new ApplicationException("无法清除Ini文件中的Section")); } } //删除某个Section下的键 public void DeleteKey(string Section, string Ident) { WritePrivateProfileString(Section, Ident, null, FileName); } //Note:对于Win9X,来说需要实现UpdateFile方法将缓冲中的数据写入文件 //在Win NT, 2000和XP上,都是直接写文件,没有缓冲,所以,无须实现UpdateFile //执行完对Ini文件的修改之后,应该调用本方法更新缓冲区。 public void UpdateFile() { WritePrivateProfileString(null, null, null, FileName); } //检查某个Section下的某个键值是否存在 public bool ValueExists(string Section, string Ident) { // StringCollection Idents = new StringCollection(); ReadSection(Section, Idents); return Idents.IndexOf(Ident) > -1; } //确保资源的释放 ~IniFiles() { UpdateFile(); } } }

㈥ 怎么读写INI文件

INI文件的结构 INI文件是一种按照特点方式排列的文本文件。每一个INI文件构成都非常类似,由若干段落(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(keyword)和一个等号,等号右边的就是关键字对应的值(value)。其一般形式如下: [Section1] KeyWord1 = Valuel KeyWord2 = Value2 …… [Section2] KeyWord3 = Value3 KeyWord4 = Value4 C#和Win32 API函数 C#并不像C++,拥有属于自己的类库。C#使用的类库是.Net框架为所有.Net程序开发提供的一个共有的类库——.Net FrameWork SDK。虽然.Net FrameWork SDK内容十分庞大,功能也非常强大,但还不能面面俱到,至少它并没有提供直接操作INI文件所需要的相关的类。在本文中,C#操作INI文件使用的是Windows系统自带Win32的API函数——WritePrivateProfileString()和GetPrivateProfileString()函数。这二个函数都位于“kernel32.dll”文件中。 我们知道在C#中使用的类库都是托管代码(Managed Code)文件,而Win32的API函数所处的文件,都是非托管代码(Unmanaged Code)文件。这就导致了在C#中不可能直接使用这些非托管代码文件中的函数。好在.Net框架为了保持对下的兼容,也为了充分利用以前的资源,提出了互操作,通过互操作可以实现对Win32的API函数的调用。互操作不仅适用于Win32的API函数,还可以用来访问托管的COM对象。C#中对Win32的API函数的互操作是通过命名空间“System.Runtime.InteropServices”中的“DllImport”特征类来实现的。它的主要作用是指示此属性化方法是作为非托管DLL的输出实现的。下面代码就是在C#利用命名空间“System.Runtime.InteropServices”中的“DllImport”特征类申明上面二个Win32的API函数: C#申明INI文件的写操作函数WritePrivateProfileString(): [ DllImport ( "kernel32" ) ] private static extern long WritePrivateProfileString ( string section , string key , string val , string filePath ) ; 参数说明:section:INI文件中的段落;key:INI文件中的关键字;val:INI文件中关键字的数值;filePath:INI文件的完整的路径和名称。 C#申明INI文件的读操作函数GetPrivateProfileString(): [ DllImport ( "kernel32" ) ] private static extern int GetPrivateProfileString ( string section , string key , string def , StringBuilder retVal , int size , string filePath ) ; 参数说明:section:INI文件中的段落名称;key:INI文件中的关键字;def:无法读取时候时候的缺省数值;retVal:读取数值;size:数值的大小;filePath:INI文件的完整路径和名称。 下面是一个读写INI文件的类 public class INIClass { public string inipath; [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section,string key,string val,string filePath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath); /// <summary> /// 构造方法 /// </summary> /// <param name="INIPath">文件路径</param> public INIClass(string INIPath) { inipath = INIPath; } /// <summary> /// 写入INI文件 /// </summary> /// <param name="Section">项目名称(如 [TypeName] )</param> /// <param name="Key">键</param> /// <param name="Value">值</param> public void IniWriteValue(string Section,string Key,string Value) { WritePrivateProfileString(Section,Key,Value,this.inipath); } /// <summary> /// 读出INI文件 /// </summary> /// <param name="Section">项目名称(如 [TypeName] )</param> /// <param name="Key">键</param> public string IniReadValue(string Section,string Key) { StringBuilder temp = new StringBuilder(500); int i = GetPrivateProfileString(Section,Key,"",temp,500,this.inipath); return temp.ToString(); } /// <summary> /// 验证文件是否存在 /// </summary> /// <returns>布尔值</returns> public bool ExistINIFile() { return File.Exists(inipath); } }

㈦ ini文件的读取

GetPrivateProfileStringW中的W的意思是宽字节(就是一个字符占用两个字节),而一般的程序使用的是窄字节(一个字符占一个字节)因此会出现开始的无法转换类型的错误后边的错误应该是你函数用错了,具体问题我也不是很清楚,能不能给更详细的信息,最好能在调试时监视一下内存变量值的变化,这样会方便找出错误。 希望下边的内容对你有帮助,尤其注意是不是文件路径不对,或者是GetPrivateProfileString((LPTSTR)"main",(LPTSTR)"ServerIPAddress",NULL,(LPTSTR*)&IP,0,(LPTSTR)init);中的那个0是不是用错了。个人认为应该是sizeof(IP),而且那个(LPTSTR)init好像也错了====================================================== 函数返回值为string的长度(long型),而从ini文件获得的字符串则保留在目的缓冲器中 DWORD GetPrivateProfileString( LPCTSTR lpAppName, //配置文件的section名 LPCTSTR lpKeyName, //配置文件的key名 LPCTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName ); 其中各参数的意义: 前二个参数与 WritePrivateProfileString中的意义一样. lpDefault : 如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量. lpReturnedString : 接收INI文件中的值的CString对象,即目的缓存器. nSize : 目的缓存器的大小. lpFileName : 是完整的INI文件名. 下面是一个常见的出错原因: GetPrivateProfileString怎么总是读不出来 ——————————————————————————– *.INI内容 [NETWORK] ServerIP=100.100.100.53 程序: main() { char ip[16]; DWORD num=0; num=GetPrivateProfileString("NETWORK","ServerIP,"", ip,sizeof(ip), "Server.ini"); cout<<num<<endl<<ip<<endl; } ——– num=GetPrivateProfileString("NETWORK","ServerIP,"", ip,sizeof(ip), "Server.ini"); Server.ini这个文件放在哪里的?要放在与应用程序相同的目录下应该用".\\server.ini" 你看看是不是没有找到这个INI文件 ———– VC中调试时,server.ini放在工程目录中;程序单独运行时,则需要放在跟exe同一个目录中。 因为从VC里启动程序,VC将程序的工作目录初始化为工程目录,而不是debug或release目录本身。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/AlwaysOnline/archive/2006/04/18/667844.aspx

㈧ INI的文件读写

读取 (_In_LPCTSTRlpAppName,_In_LPCTSTRlpKeyName,_In_LPCTSTRlpDefault,_Out_LPTSTRlpReturnedString,_In_DWORDnSize,_In_LPCTSTRlpFileName);参数说明:lpAppName (输入参数)节名lpKeyName (输入参数)键名lpDefault (输入参数)默认值。INI读取失败时,得到这个值lpReturnedString (输出参数)读取到的键值nSize (输入参数)lpReturnedString的缓冲区大小lpFileName (输入参数)INI文件的文件路径返回值:读取到的字符数,不包括末尾的''字符或L''字符。 写入 (_In_LPCTSTRlpAppName,_In_LPCTSTRlpKeyName,_In_LPCTSTRlpString,_In_LPCTSTRlpFileName);参数说明:lpAppName (输入参数)节名lpKeyName (输入参数)键名lpString (输入参数)需要写入的键值lpFileName (输入参数)INI文件的文件路径返回值:写入成功返回非零值,写入失败返回零值,可以用GetLastError函数得到错误原因。 #!/usr/bin/envpython#-*-coding:UTF-8-*-importConfigParseriniparser=ConfigParser.ConfigParser()#初始化一个INI读写类的对象iniparser.read('filename.ini')#读取INI文件key_value=iniparser.get('section_name_1','key_name')#解析INI文件printkey_value#生成INI文件iniparser.add_section('section_name_2')iniparser.set('section_name_2','key_name','key_value')withopen('filename.ini','w')asinifile: iniparser.write(inifile)#写入INI文件

㈨ 如何在C#中读写INI文件

INI文件的格式是这样的,[section] // 节点key=value// 键=值读取和设置的方法如下:写入// 返回0失败,非0成功/* section:结点名 key:键 value:值 path:文件所在路径*/[DllImport("kernel32")] private static extern long WritePrivateProfileString(string section,string key,string value,string path);读取/* key:键 value:值 def:默认值,当Key没有对应的值时,返回def builder:临时字符串size:缓冲区长度path:文件路径*/[DllImport("kernel32")]private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder builder,int size,string path);可进一步封装如下:// 写入public bool Writer(string section,string key,string value) { if(File.Exists(path)) { if(WritePrivateProfileString(section,key,value,path)==0) { return true; } } return false; }// 读取 //NoText对应API函数的def参数,值由用户指定,当配置文件中没有找到具体的Value时,就用NoText的值来代替 public string Reader(string section,string key,string noText) { if(File.Exists(path)) { StringBuilder temp = new StringBuilder(1024); GetPrivateProfileString(section,key,noText,temp,1024,path); return temp.ToString(); } return string.Empty; }

㈩ 读ini文件会消耗内存吗

会。将信息从2nr文件中读到变量中,是消耗内存的。ini文件是初始化文件,一个程序往往需要根据不同环节,以不同的参数运行程序,通常采用从配置文件读取参数的方法来达到这一目的。它的优点简单方便,可读性好,便于修改,缺点是只有两层结构,有文件大小限制,据说是64KB对复杂的数据类型描述困难,个人觉得比较好用的ri文件读写程序模板源码简单调用。


赞 (0)