开发者

C#使用kernel32.dll读写INI文件的案例详解

开发者 https://www.devze.com 2023-11-10 14:39 出处:网络 作者: 叫我少年
目录引用WritePrivateProfileStringGetPrivateProfileString写入读取封装示例INI文件是一种常见的配置文件格式,通常用于存储应用程序的配置信息。在C#中,我们可以使用Kernel32库来读写INI文件
目录
  • 引用
    • WritePrivateProfileString
    • GetPrivateProfileString
  • 写入
    • 读取
      • 封装示例

        INI文件是一种常见的配置文件格式,通常用于存储应用程序的配置信息。在C#中,我们可以使用Kernel32库来读写INI文件

        引用

        //写入
        [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 INIPath);

        WritePriva编程teProfileString

        向INI文件中写入数据:

        • section:INI文件中的一个段落名称。
        • key:INI文件中的一个键名称。
        • val:要写入的值。
        • filePath:INI文件的完整路径。

        GetPrivateProfileString

        从INI文件中读取数据:

        • section:INI文件中的一个段落名称。
        • key:INI文件中的一个键名称。
        • def:如果没有找到指定的键,则返回的默认值。
        • retVal:用于存储读取到的值的StringBuilder对象。
        • size:retVal对象的大小。
        • INIPath:INI文件的完整路径。

        写入

        public void IniWriteValue(string Section, string Key, string Value)
          {
           string inipath = ".CONFIG.INI";
           WritePrivateProfileString(Section, Key, Value, inipath);
          }
        public void IniWriteValues() {
           IniWriteValue("CONFIG", "Comport", ComPort);
          }

        读取

         StringBuilder temp = new StringBuilder(500);
           GetPrivateProfileString("CONFIG", "Player", "", temp, 500, ".\CONFIG.INI");
           Player = temp.ToString();

        封装示例

        使用了DllImport来调用Windows API函数,用于读取和写入INI文件。虽然这段代码可以正常工作,但是它存在一些问题:

        • 可读性差:代码中的参数名称和变量名不够清晰,难以理解。
        • 可维护性差:如果我们需要在代码中多次使用这些函数,我们需要在每个使用它们的地方都写一遍DllImport声明,这样会导致代码重复和维护困难。

        为了解决这些问题,可以对代码进行重构。可以将DllImport声明封装到一个类中,这样就提高代码的可读性和可维护性。同时,为函数添加更具描述性的参数名称和变量名,这样可以使代码更加易于理解。

        重构代码:

        php
        class IniFile
        {   
            // 引入kernel32.dll库,用于写入INI文件
            [DllImport("kernel32.dll")]
            private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
            // 引入kernel32.dll库,用于读取INI文件
            [DllImport("kernel32.dll")js]
            private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string INIPath);
            // INI文件路径
            private string _filePath;
            // 构造函数,初始化INI文件路径
            public IniFile(strinwww.devze.comg filePath)
            {
                _filePath = filePath;
            }
            // 写入INI文件
            public void WriteValue(string section, string key, strjsing value)
            {
                WritePrivateProfileString(section, key, value, _filePath);
            }
            // 写入INI文件
            public string ReadValue(string section, string key, string defaultValue = "")
            {
                StringBuilder sb = new StringBuilder(255);
                GetPrivateProfileString(section, key, defaultValue, sb, 255, _filePath);
                return sb.ToString();
            }
        }

        我们将DllImport声明封装到了一个名为IniFile的类中。这个类包含了两个函数:WriteValue和ReadValue,用于写入和读取INI文件中的值。我们还添加了一个构造函数,用于初始化INI文件的路径。

        现在,我们可以在代码中使用IniFile类来读取和写入INI文件中的值。这样可以提高代码的可读性和可维护性,同时也可以避免代码重复。

        到此这篇关于C#使用kernel32.dll读写INI文件的文章就介绍到这了,更多相关c# kernel32.dll读写INI文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        关注公众号