当前位置:  编程技术>.net/c#/asp.net

C#读写ini文件的类

    来源: 互联网  发布时间:2014-08-30

    本文导语:  代码如下:   代码示例: using System; using System.IO; using System.Runtime.InteropServices; using System.Text; namespace Kingsense.eMenu.Common {     ///     /// 配置文件(*.int)操作类     ///     public class RWIniFile     {         #region ...

代码如下:
 

代码示例:

using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

namespace Kingsense.eMenu.Common
{
    ///
    /// 配置文件(*.int)操作类
    ///
    public class RWIniFile
    {

        #region 声明读写配置文件的API函数
        ///
        /// 写配置文件 www.
        ///
        /// 节(如果该节不存在,则创建它)
        /// 键(该键不存在于指定的部分,它被创建。 如果这个参数为NULL,则整节被删除)
        /// 值(如果这个参数为NULL,则删除该键)
        /// 文件路径
        /// 写入成功,则返回非零值。如果函数失败或者只是刷新最近访问的缓冲区版本,返回值为零
        [DllImport("kernel32")]
        private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);

        ///
        /// 读配置文件
        ///
        /// 节(当值为NULL时,读取全部节)
        /// 键(当值为NULL时,读取全部键)
        /// 默认值(键不存在时,返回该值。当值为NULL时,则往缓冲区中写入空字符串"",避免该值为"")
        /// 缓冲区,它接收检索到的字符串的指针
        /// 缓冲区的大小
        /// 文件的路径
        /// 复制到缓冲区,不包括终止空字符的字符数
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string defaultVal, StringBuilder returnVal, int size, string filePath);
        #endregion

        #region 成员变量
        private string fileName; //INI文件名
        #endregion

        #region 属性
        ///
        /// INI文件名
        ///
        public string FileName
        {
            set
            {
                fileName = string.IsNullOrEmpty(value) ? "my.ini" : value;

                // 判断文件是否存在
                FileInfo fileInfo = new FileInfo(fileName);
                if ((!fileInfo.Exists))
                {
                    //文件不存在,建立文件
                    StreamWriter sw = new StreamWriter(fileName, false, Encoding.Default);
                    try
                    {
                        sw.Close();
                    }
                    catch (Exception)
                    {
                        throw (new ApplicationException("Ini文件不存在"));
                    }
                }

                //必须是完全路径,不能是相对路径
                fileName = fileInfo.FullName;
            }
        }
        #endregion

        #region 构造函数
        private RWIniFile()
        {
            fileName = string.Empty;
        }
        #endregion

        #region 限制只能有一个对象
        private static readonly RWIniFile instance = new RWIniFile();//菜单操作对象
        public static RWIniFile Instance
        {
            get
            {
                return instance;
            }
        }
        #endregion

        #region 写字符串
        ///
        /// 写写字符串 www.
        ///
        /// 节
        /// 键
        /// 值
        public void WriteString(string section, string key, string value)
        {
            try
            {
                WritePrivateProfileString(section, key, value, fileName);
            }
            catch (Exception)
            {
                throw (new Exception("写入Ini文件出错"));
            }
        }
        #endregion

        #region 读字符串
        ///
        /// 读字符串(最大可以读500个字符)
        ///
        /// 节
        /// 键
        /// 值
        /// 返回指定节指定键的值
        public string ReadString(string section, string key, string defaultVal)
        {
            StringBuilder temp = new StringBuilder(500);
            try
            {
                GetPrivateProfileString(section, key, defaultVal, temp, 500, fileName);
            }
            catch (Exception)
            {
                throw (new Exception("读取Ini文件出错"));
            }

            return temp.ToString();
        }
        #endregion

        #region 读整数
        ///
        /// 读整数
        ///
        /// 节
        /// 键
        /// 默认值
        /// 返回指定节指定键的值
        public int ReadInteger(string section, string key, int defaultVal)
        {

            string result = ReadString(section, key, Convert.ToString(defaultVal));
            try
            {
                return Convert.ToInt32(result);
            }
            catch (Exception)
            {
                throw (new Exception("该键的值不是整数!"));
            }
        }
        #endregion

        #region 写整数
        ///
        /// 写整数
        ///
        /// 节
        /// 键
        /// 值
        public void WriteInteger(string section, string key, int value)
        {
            WriteString(section, key, value.ToString());
        }
        #endregion

        #region 读布尔
        ///
        /// 读布尔
        ///
        /// 节
        /// 键
        /// 默认值
        ///
        public bool ReadBool(string section, string key, bool defaultVal)
        {
            string result = ReadString(section, key, Convert.ToString(defaultVal));
            try
            {
                return Convert.ToBoolean(result);
            }
            catch (Exception)
            {
                throw (new Exception("该键的值不是布尔值!"));
            }
        }
        #endregion

        #region 写Bool
        ///
        /// 写Bool
        ///
        ///
        ///
        ///
        public void WriteBool(string section, string key, bool value)
        {
            WriteString(section, key, Convert.ToString(value));
        }
        #endregion

        #region 删除节
        ///
        /// 删除节
        /// k
        /// 节
        public void DeleteSection(string section)
        {
            try
            {
                WritePrivateProfileString(section, null, null, fileName);
            }
            catch (Exception)
            {
                throw (new Exception("无法清除Ini文件中的节"));
            }
        }
        #endregion

        #region 删除节下的键
        ///
        /// 删除节下的键
        ///
        /// 节
        /// 键
        public void DeleteKey(string section, string key)
        {
            WritePrivateProfileString(section, key, null, fileName);
        }
        #endregion

        #region 更新缓冲区
        ///
        /// 更新缓冲区(1、对于Win9X,需要实现UpdateFile方法将缓冲中的数据写入文件
 //2、在Win NT, 2000和XP上,都是直接写文件,没有缓冲,无须实现UpdateFile3、执行完对Ini文件的修改之后,应该调用本方法更新缓冲区。)
        ///
        public void UpdateFile()
        {
            WritePrivateProfileString(null, null, null, fileName);
        }
        #endregion

        #region 析构函数
        ///
        /// 更新缓冲区
        ///
        ~RWIniFile()
        {
            UpdateFile();
        }
        #endregion
    }
}


    
 
 

您可能感兴趣的文章:

  • C#读写xml文件的简单例子
  • c#读写注册表代码一例
  • c#读写注册表示例分享
  • c# 共享状态的文件读写实现代码
  • C#中读写INI文件的方法例子
  • C#读写xml配置文件(LINQ操作实例)
  • C# javascript 读写Cookie的方法
  • c# Stream byte[]及文件转换与读写的代码
  • C# 向二进制文件进行读写的操作方法
  • C#读写txt文件多种方法实例代码
  • c# api读写ini配置文件的类
  • c#读写ini配置文件的例子
  • c#读写ini格式配置文件的实现代码
  • c#读写ini配置文件示例
  • c#实现ini文件读写的类
  • C#读写注册表的思路及代码
  • c#实现ini文件读写类分享
  • c#读写excel文件使用示例
  • c#保存窗口位置大小操作类(序列化和文件读写功能)
  • C#读写文件的方法汇总
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • linux 下能否读写.dbf 或者.xls格式的文件,怎样读写?高手指点,拜谢!!!
  • 文件或文件夹,如何指定某用户的读写权限?
  • 在中断服务程序里可以进行文件的读写操作么?
  • 有谁知道,Linux下文件的读写原理是怎样的?急
  • 请问unix下修改文件和文件夹读写权限的问题
  • 父子进程读写文件问题
  • 如何以独占式读写文件?
  • j2me读写,修改本地文件
  • samba文件读写问题
  • 怎样将linux系统底下一个文件夹的只读属性改为可读写的属性?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • unix/Linux下c++ boost thread库读写锁介绍
  • 自旋锁和读写自旋锁、信号量和读写信号量分别有什么区别?
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • CentOS5.2 如何设置目录读写权限,要求子目录均可以读写。
  • 最新Windows下c++读写锁SRWLock介绍
  • SD卡的驱动只能支持读写2GB的卡,如果要读写更大容量,该修改什么地方?
  • windows下c/c++读写锁实现原理及代码参考
  • 串口读写,双方同时读写控制问题(linux内核)。
  • c#/ASP.NET操作cookie(读写)代码示例
  • linux多线程无法进行阻塞方式的读写操作
  • socket是否可以同时读写
  • 如何通过LD_PRELOAD降低程序的读写速度
  • 请问JAVA如何读写注册表
  • 怎样编程实现I/O端口的读写?
  • 紧急求助,读写Flash ROM。
  • 读写寄存器错误
  • linux下读写硬件
  • Qt如何读写注册表?
  • python怎么读写串口
  • 如何在内核模块中对linux字符驱动进行读写呢
  • 如何向hid设备读写数据


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3