VB READ INT AND WRITE INI
Imports System.IO Module iniFile ' 定义一个函数,用来读取ini文件中的指定键值 Function ReadIni(ByVal fileName As String, ByVal section As String, ByVal key As String) As String ' 创建一个StreamReader对象,打开ini文件 Using sr As StreamReader = New StreamReader(fileName) Dim line As String ' 用来存储每一行的文本 Dim foundSection As Boolean = False ' 用来标记是否找到了目标节 ' 逐行读取文件,直到找到目标键或者文件结束 line = sr.ReadLine() While (line <> Nothing) ' 去掉行首和行尾的空白字符 line = line.Trim() ' 如果是节名称,判断是否是目标节 If line.StartsWith("[") And line.EndsWith("]") Then If line.Equals("[" & section & "]") Then foundSection = True ' 找到了目标节 Else foundSection = False ' 找到了其他节,跳过 End If ElseIf foundSection Then ' 如果已经找到了目标节,继续查找目标键 ' 用等号分割键和值 Dim parts() As String = line.Split("=") If parts.Length = 2 Then ' 如果有且只有一个等号,说明是有效的键值对 Dim k As String = parts(0).Trim() ' 键 Dim v As String = parts(1).Trim() ' 值 If k.Equals(key) Then ' 如果键匹配,返回值并结束函数 Return v End If End If End If ' 读取下一行 line = sr.ReadLine() End While End Using ' 如果没有找到目标键,返回空字符串 Return "" End Function ' 定义一个函数,用来写入ini文件中的指定键值 Sub WriteIni(ByVal fileName As String, ByVal section As String, ByVal key As String, ByVal value As String) ' 创建一个临时文件名,用来存储修改后的内容 Dim tempFile As String = Path.GetTempFileName() ' 创建一个StreamWriter对象,打开临时文件 Using sw As StreamWriter = New StreamWriter(tempFile) ' 创建一个StreamReader对象,打开ini文件 Using sr As StreamReader = New StreamReader(fileName) Dim line As String ' 用来存储每一行的文本 Dim foundSection As Boolean = False ' 用来标记是否找到了目标节 Dim writtenKey As Boolean = False ' 用来标记是否写入了目标键值对 ' 逐行读取文件,直到文件结束或者写入了目标键值对 line = sr.ReadLine() While (line <> Nothing) ' 去掉行首和行尾的空白字符 line = line.Trim() ' 如果是节名称,判断是否是目标节或者其他节 If line.StartsWith("[") And line.EndsWith("]") Then If Not writtenKey And foundSection Then ' 如果还没有写入目标键值对,并且已经找到了目标节, ' 那么在当前节的末尾写入目标键值对,并标记为已写入。 sw.WriteLine(key & "=" & value) writtenKey = True End If If line.Equals("[" & section & "]") Then foundSection = True ' 找到了目标节 Else foundSection = False ' 找到了其他节 End If sw.WriteLine(line) ' 将当前行写入临时文件 ElseIf foundSection Then ' 如果已经找到了目标节,继续查找目标键 ' 用等号分割键和值 Dim parts() As String = line.Split("=") If parts.Length = 2 Then ' 如果有且只有一个等号,说明是有效的键值对 Dim k As String = parts(0).Trim() ' 键 Dim v As String = parts(1).Trim() ' 值 If k.Equals(key) Then ' 如果键匹配,修改值并标记为已写入 sw.WriteLine(key & "=" & value) writtenKey = True Else ' 如果键不匹配,保持原样 sw.WriteLine(line) End If Else ' 如果不是有效的键值对,保持原样 sw.WriteLine(line) End If Else ' 如果还没有找到目标节,保持原样 sw.WriteLine(line) End If ' 读取下一行 line = sr.ReadLine() End While If Not writtenKey Then ' 如果还没有写入目标键值对,说明目标节不存在或者目标键不存在, ' 那么在文件的末尾创建目标节并写入目标键值对。 sw.WriteLine() sw.WriteLine("[" & section & "]") sw.WriteLine(key & "=" & value) End If End Using End Using ' 删除原始文件,并将临时文件重命名为原始文件名 File.Delete(fileName) File.Move(tempFile, fileName) End Sub End Module