C# ini 파일 입출력 예제

2021. 8. 10. 10:36프로그래밍

반응형

C#에서 ini 파일을 다루기 위한 예제입니다.

 

사용에 참고하시기 바랍니다.

 

 class clsINI
    {       
        public string sINIPath;

        /// <summary>
        /// clsINI 생성자
        /// </summary>
        /// <param name="sPath">ini 파일 경로 ex) @"D:\\Example.ini" </param>
        public clsINI(string sPath)
        {
            sINIPath = sPath;
        }

        /// <summary>
        /// INI 파일 읽기 함수 (섹션설정)
        /// </summary>
        /// <param name="Section">섹션</param>
        /// <returns></returns>
        public string[] GetIniValue1(string Section)
        {
            byte[] ba = new byte[255];
            uint flag = GetPrivateProfileSection(Section, ba, 255, sINIPath);
            return Encoding.Default.GetString(ba).Split(new char[1] { '\0' }, StringSplitOptions.RemoveEmptyEntries);
        }

        /// <summary>
        /// INI 파일 읽기 함수 (섹션, 키값 설정)
        /// </summary>
        /// <param name="Section">섹션</param>
        /// <param name="Key">키값</param>
        /// <returns></returns>
        public string GetIniValue2(string Section, string Key)
        {
            StringBuilder sb = new StringBuilder(500);
            int Flag = GetPrivateProfileString(Section, Key, "", sb, 500, sINIPath);
            return sb.ToString();
        }

        /// <summary>
        /// INI 파일 쓰기 함수 (섹션, 키값 설정)
        /// </summary>
        /// <param name="Section">섹션</param>
        /// <param name="Key">키</param>
        /// <param name="Value">값</param>
        /// <returns></returns>
        public bool SetIniValue(string Section, string Key, string Value)
        {
            return (WritePrivateProfileString(Section, Key, Value, sINIPath));
        }

        //public static void InitialConfig(string sINIPath)
        //{
        //    if (File.Exists(sINIPath) == true)
        //    {
        //        clsDataManager.bHost = Convert.ToBoolean(GetIniValue2("General", "Host", sINIPath));
        //        clsDataManager.bHSMS = Convert.ToBoolean(GetIniValue2("General", "HSMS", sINIPath));
        //    }
        //    else
        //    {
        //        SetIniValue("General", "Host", clsDataManager.bHost.ToString(), sINIPath);
        //        SetIniValue("General", "HSMS", clsDataManager.bHSMS.ToString(), sINIPath);
        //        SetIniValue("General", "Device ID", clsDataManager.nDeviceID.ToString(), sINIPath);
        //        SetIniValue("General", "Queue", clsDataManager.nQueue.ToString(), sINIPath);
        //    }
        //}

        #region DLLImport for ini File Read & Write
        [DllImport("kernel32")]
        public static extern int GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);

        [DllImport("kernel32")]
        public static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName);

        [DllImport("kernel32.dll")]
        public static extern uint GetPrivateProfileSection(string lpAppName, byte[] lpPairValue, uint nSize, string lpFileName);

        [DllImport("kernel32.dll")]
        public static extern uint GetPrivateProfileSectionNames(byte[] lpSections, uint nSize, string lpFileName);
        #endregion


    }
반응형