반응형

* INI 파일 예제...

 

예제 메인화면

 

Form1.cs

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Runtime.InteropServices;


namespace CSharp_INIFile
{
    public partial class Form1 : Form
    {
        #region INI 파일 사용을 위해 API 선언...

        [DllImport("KERNEL32.DLL")]
        private static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName);

        [DllImport("KERNEL32.DLL")]
        private static extern uint GetPrivateProfileInt(string lpAppName, string lpKeyName, int nDefault, string lpFileName);

        [DllImport("kernel32.dll")]
        static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);

        #endregion

        #region 정의 함수...
        //INIFile 읽어오기...
        private string getIni(string IpAppName, string IpKeyName, string lpDefalut, string filePath)
        {
            string inifile = filePath;    //Path + File

            try
            {
                StringBuilder result = new StringBuilder(255);
                GetPrivateProfileString(IpAppName, IpKeyName, lpDefalut, result, result.Capacity , inifile);

                return result.ToString();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return "실패";
            }
        }

        //INIFile 쓰기...
        private Boolean setIni(string IpAppName, string IpKeyName, string IpValue, string filePath)
        {
            try
            {
                string inifile = filePath;  //Path + File
                WritePrivateProfileString(IpAppName, IpKeyName, IpValue, inifile);
                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return false;
            }
        }

        //INIFile 만들기...
        private Boolean CreateIni(string strFileName)
        {
            try
            {
                string strCheckFolder = "";

                strCheckFolder = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf('\\'));
                strCheckFolder += "\\INI";
                if (!System.IO.Directory.Exists(strCheckFolder))
                {
                    System.IO.Directory.CreateDirectory(strCheckFolder);

                }

                strCheckFolder += "\\" + strFileName + ".ini";
                if (!System.IO.File.Exists(strCheckFolder))
                {
                    using (System.IO.StreamWriter sw = new System.IO.StreamWriter(strCheckFolder, true, Encoding.GetEncoding(949)))
                    {
                        sw.Write("\r\n");
                        sw.Flush();
                        sw.Close();
                    }

                }

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message.ToString());
                return false;
            }
            return true;
        }


        #endregion

        string strCheckFolder = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf('\\'));

        public Form1()
        {
            InitializeComponent();

            strCheckFolder += "\\INI";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //만들기...
            if (CreateIni("Test"))
            {
                label1.Text = "INIFile Create Complete.";
                label2.Text = "FileName: Test.ini";
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //읽기...
            label4.Text = "INIFile Read Complete.";
            label3.Text = getIni("Test_Info", "Test", "", strCheckFolder + "\\Test.ini");

        }

        private void button3_Click(object sender, EventArgs e)
        {
            //쓰기...
            if (setIni("Test_Info", "Test", "1231231231", strCheckFolder + "\\Test.ini"))
            {
                label6.Text = "INIFile Write Complete.";
                label5.Text = "Value: 1231231231";
            }
        }
    }

    

}

 

위 예제는 윈도우 API 함수를 이용해 INI 파일을 읽고 쓰기를 해 보았습니다. INI 파일 삭제는

if ( File.Exits("파일위치")) File.Delete("파일위치") ; 파일 삭제랑 똑같기 때문에 따로 넣진 않았습니다.

 

* 예제 결과

 

결과 화면

위 사진은 INI 파일 내용 으로 INI File Read 시 어떤 내용을 읽어 오는지를 참조 하기 위해...

반응형

+ Recent posts