C#中读写INI文件

时间:2022-02-14 10:03:33
在网上找了关于ini文件读写方法,还是没有找到ini文件中有一个Section多个Key的读写情况,在一篇C++文章中得到点提示操作如下:
1.创建ini文件读写类:
C#中读写INI文件using  System.Runtime.InteropServices;
C#中读写INI文件
using  System.Text;
C#中读写INI文件
C#中读写INI文件
namespace  INIDemo
C#中读写INI文件C#中读写INI文件
{
C#中读写INI文件C#中读写INI文件    
///  <summary>
C#中读写INI文件    
///  读写ini文件的类
C#中读写INI文件    
///  调用kernel32.dll中的两个API:WritePrivateProfileString,GetPrivateProfileString
C#中读写INI文件    
///  来实现对ini  文件的读写。
C#中读写INI文件    
///  INI文件是文本文件,
C#中读写INI文件    
///  由若干节(section)组成,
C#中读写INI文件    
///  在每个带括号的标题下面,
C#中读写INI文件    
///  是若干个关键词(key)及其对应的值(value) 
C#中读写INI文件    
///  例如:
C#中读写INI文件    
///  [Section]
C#中读写INI文件    
///  Key=value
C#中读写INI文件    
///  </summary>

C#中读写INI文件    public class IniFile
C#中读写INI文件C#中读写INI文件    
{
C#中读写INI文件C#中读写INI文件        
///  <summary>
C#中读写INI文件        
///  ini文件名称(带路径)
C#中读写INI文件        
///  </summary>

C#中读写INI文件        public string filePath;
C#中读写INI文件
C#中读写INI文件C#中读写INI文件        
///  声明读写INI文件的API函数
C#中读写INI文件        [DllImport("kernel32")]
C#中读写INI文件        
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
C#中读写INI文件
C#中读写INI文件        [DllImport(
"kernel32")]
C#中读写INI文件        
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
C#中读写INI文件
C#中读写INI文件C#中读写INI文件        
///  <summary>
C#中读写INI文件        
///  类的构造函数
C#中读写INI文件        
///  </summary>
C#中读写INI文件        
///  <param  name="INIPath">INI文件名</param>  

C#中读写INI文件        public IniFile(string INIPath)
C#中读写INI文件C#中读写INI文件        
{
C#中读写INI文件            filePath 
= INIPath;
C#中读写INI文件        }

C#中读写INI文件C#中读写INI文件        
///  <summary>
C#中读写INI文件        
///  写INI文件
C#中读写INI文件        
///  </summary>
C#中读写INI文件        
///  <param  name="Section">Section</param>
C#中读写INI文件        
///  <param  name="Key">Key</param>
C#中读写INI文件        
///  <param  name="value">value</param>

C#中读写INI文件        public void WriteInivalue(string Section, string Key, string value)
C#中读写INI文件C#中读写INI文件        
{
C#中读写INI文件            WritePrivateProfileString(Section, Key, value, 
this.filePath);
C#中读写INI文件        }

C#中读写INI文件C#中读写INI文件        
///  <summary>
C#中读写INI文件        
///  读取INI文件指定部分
C#中读写INI文件        
///  </summary>
C#中读写INI文件        
///  <param  name="Section">Section</param>
C#中读写INI文件        
///  <param  name="Key">Key</param>
C#中读写INI文件        
///  <returns>String</returns>  

C#中读写INI文件        public string ReadInivalue(string Section, string Key)
C#中读写INI文件C#中读写INI文件        
{
C#中读写INI文件            StringBuilder temp 
= new StringBuilder(1024);
C#中读写INI文件            
int i = GetPrivateProfileString(Section, Key, "读取错误", temp, 1024this.filePath);
C#中读写INI文件            
return temp.ToString();
C#中读写INI文件        }

C#中读写INI文件    }

C#中读写INI文件}

C#中读写INI文件

2. 测试INI文件读写
C#中读写INI文件         // 写入ini文件
C#中读写INI文件
         private   void  button1_Click( object  sender, EventArgs e)
C#中读写INI文件C#中读写INI文件        
{
C#中读写INI文件            
string filePath = Path.GetFullPath(@"demo.ini");
C#中读写INI文件            IniFile iniFile 
= new IniFile(filePath);
C#中读写INI文件
C#中读写INI文件            
//在一个section中写入一个key
C#中读写INI文件
            iniFile.WriteInivalue("Section1""Key1""Key1's Value");
C#中读写INI文件            iniFile.WriteInivalue(
"Section2""Key2""Key2's Value");
C#中读写INI文件
C#中读写INI文件            
//在一个section中写入多个key
C#中读写INI文件C#中读写INI文件
            string[] fileNames = new string[] "file1""file2""file3""file4" };
C#中读写INI文件C#中读写INI文件            
string[] values = new string[] "value1""value2""value3""value4" };
C#中读写INI文件            
for (int i = 0; i < 4; i++)
C#中读写INI文件C#中读写INI文件            
{
C#中读写INI文件                iniFile.WriteInivalue(
"UseFileName", fileNames[i], values[i]);
C#中读写INI文件            }

C#中读写INI文件        }

C#中读写INI文件
C#中读写INI文件        
// 读取ini文件
C#中读写INI文件
         private   void  button2_Click( object  sender, EventArgs e)
C#中读写INI文件C#中读写INI文件        
{
C#中读写INI文件            
string filePath = Path.GetFullPath(@"demo.ini");
C#中读写INI文件            IniFile iniFile 
= new IniFile(filePath);
C#中读写INI文件
C#中读写INI文件            
//读取单个section的单个值
C#中读写INI文件
            string singleValue1 = null;
C#中读写INI文件            
string singleValue2 = null;
C#中读写INI文件            singleValue1 
= iniFile.ReadInivalue("Section1""Key1");
C#中读写INI文件            singleValue2 
= iniFile.ReadInivalue("Section2""Key2");
C#中读写INI文件            MessageBox.Show(singleValue1 
+ " " + singleValue2);
C#中读写INI文件
C#中读写INI文件            
//读取单个section的多个值
C#中读写INI文件C#中读写INI文件
            string[] fileNames = new string[] "file1""file2""file3""file4" };
C#中读写INI文件            ArrayList values 
= new ArrayList();
C#中读写INI文件            
for (int i = 0; i < 4; i++)
C#中读写INI文件C#中读写INI文件            
{
C#中读写INI文件                values.Add(iniFile.ReadInivalue(
"UseFileName", fileNames[i]));
C#中读写INI文件            }

C#中读写INI文件
C#中读写INI文件            
int nCount = values.Count;
C#中读写INI文件            
string multiValues = null;
C#中读写INI文件            
for (int i = 0; i < nCount; i++)
C#中读写INI文件C#中读写INI文件            
{
C#中读写INI文件                multiValues 
+= values[i].ToString() + " ";
C#中读写INI文件            }

C#中读写INI文件            MessageBox.Show(multiValues);
C#中读写INI文件        }

结果:
[Section1]
Key1=Key1's Value
[Section2]
Key2=Key2's Value
[UseFileName]
file1=value1
file2=value2
file3=value3
file4=value4