.ini 파일

2025. 10. 23. 17:10·C#

변수값을 하드에 저장해야 할 때, 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

'C#' 카테고리의 다른 글

반복문 for VS for each 차이  (0) 2025.10.28
ini 프로그램 (gpt 사용)  (0) 2025.10.27
C# ini 파일 읽기  (0) 2025.10.27
파일 입출력  (0) 2025.10.23
시리얼 통신  (0) 2025.10.22
'C#' 카테고리의 다른 글
  • ini 프로그램 (gpt 사용)
  • C# ini 파일 읽기
  • 파일 입출력
  • 시리얼 통신
joo_coding
joo_coding
2025.02.18~
  • joo_coding
    주코딩일지
    joo_coding
  • 전체
    오늘
    어제
    • 분류 전체보기 (219)
      • 일지 (19)
      • 계획표 (7)
      • 프로젝트 (6)
      • C언어 (35)
        • 연습장 (12)
      • C++ (3)
      • C# (34)
      • Python (28)
        • 연습장 (11)
      • TCP IP (4)
      • DB (2)
      • ubuntu (1)
      • Git (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    c언어 #vscode #gcc #윈도우 #c언어윈도우 #gcc윈도우 #vscode윈도우 #c #c++
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
joo_coding
.ini 파일
상단으로

티스토리툴바