自己写的 读写 ini 配置文件类

    /// <summary>
    /// 不调用系统API 读写 ini 配置文件
    /// </summary>
    public class RW_ini
    {
        #region ========ini 读写========
        // 首次调用 RWini 时需要初始化此参数
        public static string pathIni;
        // 记录错误信息 与 WriteLog 一起使用
        public static string pathErr;

        public static string ReadIni(string section, string key)
        {
            string result = "";
            try
            {
                // 文件不存在则创建
                if (!File.Exists(pathIni))
                {
                    File.Create(pathIni);
                }
                else
                {
                    //读取INI文件
                    string buffer;
                    string[] temp;
                    using (StreamReader sr = new StreamReader(pathIni, Encoding.Default))
                    {
                        while (sr.Peek() >= 0)
                        {
                            buffer = sr.ReadLine().Trim();
                            if (!string.IsNullOrEmpty(buffer) && buffer.StartsWith(string.Format("[{0}]", section), StringComparison.OrdinalIgnoreCase))
                            {
                                while (sr.Peek() > 0)
                                {
                                    buffer = sr.ReadLine().Trim();
                                    if (!string.IsNullOrEmpty(buffer))
                                    {
                                        if (buffer.StartsWith("["))
                                            break;
                                        if (!buffer.StartsWith(";"))
                                        {
                                            temp = buffer.Split(‘=‘);
                                            if (temp.Length > 1 && temp[0].TrimEnd().Equals(key, StringComparison.OrdinalIgnoreCase))
                                            {
                                                return temp[1].TrimStart();
                                            }
                                        }
                                    }
                                }
                                // 不再判断下一个节点
                                return result;
                            }
                        }
                    }
                }
                // 不再判断下一个节点
                return result;
            }
            catch
            {
                throw new ApplicationException("同步文件读取异常!");
            }
        }

        private void WriteIni(string section, string key, string value)
        {
            try
            {
                // 文件不存在则创建
                if (!File.Exists(pathIni))
                {
                    File.Create(pathIni);
                }
                // 修改INI文件
                bool modify = false, find = false;
                string buffer;
                List<string> temp = new List<string>();
                // 将所有配置文件放到集合中
                using (StreamReader sr = new StreamReader(pathIni, Encoding.Default))
                {
                    while (sr.Peek() >= 0)
                    {
                        buffer = sr.ReadLine().Trim();
                        temp.Add(buffer);

                        if (!modify && !string.IsNullOrEmpty(buffer) && buffer.StartsWith(string.Format("[{0}]", section), StringComparison.OrdinalIgnoreCase))
                        {
                            find = true;
                            while (sr.Peek() >= 0)
                            {
                                buffer = sr.ReadLine().Trim();
                                temp.Add(buffer);
                                if (!string.IsNullOrEmpty(buffer))
                                {
                                    if (buffer.StartsWith("["))
                                        break;
                                    if (!modify && !buffer.StartsWith(";") && buffer.Split(‘=‘)[0].TrimEnd() == key)
                                    {
                                        modify = true;
                                        temp.RemoveAt(temp.Count - 1);
                                        if (value != null)
                                        {
                                            temp.Add(string.Format("{0} = {1}", key, value));
                                        }
                                    }
                                }
                            }

                            if (!modify)
                            {
                                temp.Insert(temp.Count - 1, string.Format("{0} = {1}", key, value));
                            }
                        }
                    }
                    if (!modify && !find)
                    {
                        temp.Add(string.Format("[{0}]", section));
                        temp.Add(string.Format("{0} = {1}", key, value));
                    }
                }
                using (StreamWriter sw = new StreamWriter(pathIni, false, Encoding.Default))
                {
                    foreach (string item in temp)
                        sw.WriteLine(item);
                }
            }
            catch
            {
                throw new ApplicationException("同步文件写入异常!");
            }
        }

        public static void WriteLog(string content)
        {
            File.AppendText(pathErr).WriteLine("时间:{0} 信息:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm"), content);
        }
    }

因为 WinCE 不带读写 ini 的API 而且自己用的配置文件节点并不多

因此自己编写此类 用于 WinCE 系统中。C# 代码

时间: 2024-11-14 11:38:42

自己写的 读写 ini 配置文件类的相关文章

引用“kernel32”读写ini配置文件

引用"kernel32"读写ini配置文件 unity ini kernel32 配置文件 引用"kernel32"读写ini配置文件 OverView kernel32.dll是Windows中非常重要的32位动态链接库文件,属于内核级文件.它控制着系统的内存管理.数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域. standardshader与toonshader比较:

C# 读取Ini配置文件类

配置文件 为fileName.ini 的文件 第一行必须为空,不然读不出值 [section1] key=value key2=value ......... [section2] key=value key2=value ......... 代码如下: using System; using System.Runtime.InteropServices; using System.Text; namespace Test { /// <summary> /// INI文件的操作类 /// &

WritePrivateProfileString等读写.ini配置文件

配置文件中经常用到ini文件,在VC中其函数分别为: 写入.ini文件: BOOL WritePrivateProfileString( LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名 LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名 LPCTSTR lpString, // 键值,也就是数据 LPCTSTR lpFileName // INI文件的路径 ); 读取.ini文件: DWORD Get

C/C++ 关于如何读写ini配置文件 (小结)

我们可能经常用到配置文件ini文件来获取或者保存参数信息,在VC中其函数中主要用到的有: 读取 读取字符   DWORD GetPrivateProfileString(  LPCTSTR lpAppName,        // INI文件中的一个字段名[节名]可以有很多个节名   LPCTSTR lpKeyName,        // lpAppName 下的一个键名,也就是里面具体的变量名   LPCTSTR lpDefault,        // 如果lpReturnedString

c#读写ini配置文件示例

虽然c#里都是添加app.config 并且访问也很方便 ,有时候还是不习惯用他.那么我们来做个仿C++下的那种ini配置文件读写吧 其他人写的都是调用非托管kernel32.dll.我也用过 但是感觉兼容性有点不好 有时候会出现编码错误,毕竟一个是以前的系统一个是现在的系统.咱来写一个纯C#的ini格式配置文件读取,其实就是文本文件读写啦.但是我们要做的绝不仅仅是这样 是为了访问操作的方便 更是为了以后的使用. 都知道ini格式的配置文件里各个配置项 其实就是一行一行的文本 key跟value

在VC中读写ini配置文件

配置文件中经常用到ini文件,在VC中其函数分别为: 写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName); 读取.ini文件:DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpReturnedS

读写INI配置文件。

核心函数: 写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,//INI文件中的一个字段名 LPCTSTR lpKeyName,//lpAppName 下的一个键名,也就是里面具体的变量名 LPCTSTR lpString,//是键值,也就是变量的值, 必须为LPCTSTR或CString类型 LPCTSTR lpFileName);//完整的INI文件路径名 读取.ini文件:DWORD GetPrivateProfileStr

JS通过ActiveX读写ini配置文件

1 String.prototype.trim = function(){ 2 return this.replace(/(^\s+)|(\s+$)/g, ''); 3 }; 4 5 IniConfig = function(iniFileName) { 6 this.iniFileName = iniFileName; 7 this._iniSecDictionary = new Array(); 8 this.fso = new ActiveXObject("Scripting.FileSy

C# 读写ini配置文件(.net/SQL技术交流群206656202 入群需注明博客园)

using System; using System.IO; using System.Reflection; using System.Runtime.InteropServices; using System.Text; namespace Souxuexiao.Cache { public static class IniConfig { static string ConfigurationFilePath; static IniConfig() { var Ass = Assembly