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/