C#

.ini 파일

joo_coding 2025. 10. 23. 17:10

변수값을 하드에 저장해야 할 때, C#에서는 ini 파일을 사용함

ini파일은 매개변수와 섹션으로 이루어져 있고, 매개변수는 이름과 값을 가지고 있다.

[섹션]
키=밸류

[owner]
name=홍길동
organization=최고의 제품

[database]
server=192.0.2.62
port=143
file="payroll.dat"

using System.Runtime.InteropServices; //DllImport

이게 있어야 [DllImport("kernel32")] 이거를 할 수 있다.

using System;
using System.Runtime.InteropServices; // DllImport
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PracINI
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // ini파일 입출력 메소드
       [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filepath);

        [DllImport("kernel32")]
        private static extern long GetPrivateProfileString(string section, string key, string def, StringBuilder reVal, int size, string filepath);

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btn_Read_Click(object sender, EventArgs e)
        {
            StringBuilder A1 = new StringBuilder();
            StringBuilder A2 = new StringBuilder();
            StringBuilder A3 = new StringBuilder();

            StringBuilder B1 = new StringBuilder();
            StringBuilder B2 = new StringBuilder();
            StringBuilder B3 = new StringBuilder();

            StringBuilder C1 = new StringBuilder();
            StringBuilder C2 = new StringBuilder();
            StringBuilder C3 = new StringBuilder();

            GetPrivateProfileString("A", "1", "a", A1, 32, "\test.ini"); // 섹션, 키, 기본값, 변수, 크기, 경로
            GetPrivateProfileString("A", "2", "b", A2, 32, "\test.ini");
            GetPrivateProfileString("A", "3", "c", A3, 32, "\test.ini");

            GetPrivateProfileString("B", "1", "d", B1, 32, "\test.ini"); // 섹션, 키, 기본값, 변수, 크기, 경로
            GetPrivateProfileString("B", "2", "e", B2, 32, "\test.ini");
            GetPrivateProfileString("B", "3", "f", B3, 32, "\test.ini");

            GetPrivateProfileString("C", "1", "g", C1, 32, "\test.ini"); // 섹션, 키, 기본값, 변수, 크기, 경로
            GetPrivateProfileString("C", "2", "h", C2, 32, "\test.ini");
            GetPrivateProfileString("C", "3", "i", C3, 32, "\test.ini");

            rtb.Text = A1.ToString();
            rtb.Text += A2.ToString();
            rtb.Text += A3.ToString();
            rtb.Text += B1.ToString();
            rtb.Text += B2.ToString();
            rtb.Text += B3.ToString();
            rtb.Text += C1.ToString();
            rtb.Text += C2.ToString();
            rtb.Text += C3.ToString();
        }

        private void btn_Write_Click(object sender, EventArgs e)
        {
            WritePrivateProfileString("A", "1", "a", Application.StartupPath + @"\test.ini"); // 섹션, 키, 밸류, 경로
            WritePrivateProfileString("A", "2", "b", Application.StartupPath + @"\test.ini");
            WritePrivateProfileString("A", "3", "c", Application.StartupPath + @"\test.ini");

            WritePrivateProfileString("B", "1", "d", Application.StartupPath + @"\test.ini");
            WritePrivateProfileString("B", "2", "e", Application.StartupPath + @"\test.ini");
            WritePrivateProfileString("B", "3", "f", Application.StartupPath + @"\test.ini");

            WritePrivateProfileString("C", "1", "g", Application.StartupPath + @"\test.ini");
            WritePrivateProfileString("C", "2", "h", Application.StartupPath + @"\test.ini");
            WritePrivateProfileString("C", "3", "i", Application.StartupPath + @"\test.ini");
            MessageBox.Show("ini파일 생성완료");

        }
    }
}

 

섹션 간에 줄바꿈이 없어서 불편하지만 어찌저찌 ini 파일이 만들어졌다.

 

 

++

아이템이 끝나는 지점에 개행을 넣어주었더니 해결!

하나씩 때려박을것을 어떻게 for문으로 돌릴 수 있을지 생각해보자.


< 참고한 사이트 >

https://www.delftstack.com/ko/howto/csharp/csharp-ini-file/

https://m.blog.naver.com/dnjswls23/222608228536

https://crazykim2.tistory.com/359#google_vignette