loading

프로그래밍/C#

C# ini파일 입출력 방법

침착곰 2021. 4. 15. 15:16
반응형

안녕하세요

C# ini파일 입출력 방법에 대해서 알아보겠습니다

ini파일은 주로 프로그램을 처음 실행했을 때 프로그램의 환경설정정보 및 기타정보 등을 저장할 때 ini파일을 사용해서 로드 및 저장을 합니다

 

1. 최종 소스

iniFile.zip
0.19MB

 

2. 디자인

간단하게 성명과 나이를 ini파일에 저장하고 불러오는 프로그램을 만들어봤습니다

라벨을 사용해서 성명과 나이를 그리고 텍스트박스를 붙였습니다

이어서 저장하기, 불러오기 버튼을 간단하게 만들었습니다

 

3. 소스 설명

 - ini파일 입출력 메소드를 가져옵니다

  DllImport를 사용해서 kernel32에서 ini파일 입출력 메소드를 가져왔습니다

1
2
3
4
5
6
#region ini 입력 메소드
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
#endregion
cs

 

 - ini파일 저장하기 버튼을 구현했습니다

  밑에 주석에도 설명되어있지만 메소드는 처음부터 순서대로 카테고리, Key값, Value, 저장할 경로를 차례대로 입력해줍니다

  저장된 경로에서 Application.StartupPath를 하면 exe파일 안에 ini파일이 생성됩니다

1
2
3
4
5
6
7
8
// 저장하기 버튼 클릭 이벤트
private void btnSave_Click(object sender, EventArgs e)
{
    // ini파일에 등록
    // WritePrivateProfileString("카테고리", "Key값", "Value", "저장할 경로");
    WritePrivateProfileString("HUMAN""NAME", txtName.Text, Application.StartupPath + @"\Human.ini");
    WritePrivateProfileString("HUMAN""AGE", txtAge.Text, Application.StartupPath + @"\Human.ini");
}
cs

 

 - ini파일 불러오기 버튼을 구현했습니다

  마찬가지로 밑에 주석에도 설명되어있지만 메소드는 처음부터 순서대로 카테고리, Key값, 기본값, 저장할 변수, 읽어올 바이트 수, 불러올 경로를 차례대로 입력해줍니다

  기본값은 Key값이 없을 경우 기본값을 호출합니다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 불러오기 버튼 클릭 이벤트
private void btnLoad_Click(object sender, EventArgs e)
{
    // ini값을 집어넣을 변수 선언
    StringBuilder Name = new StringBuilder();
    StringBuilder Age = new StringBuilder();
 
    // ini파일에서 데이터를 불러옴
    // GetPrivateProfileString("카테고리", "Key값", "기본값", "저장할 변수", "읽어올 바이트 수", "불러올 경로");
    GetPrivateProfileString("HUMAN""NAME""", Name, 32, Application.StartupPath + @"\Human.ini");
    GetPrivateProfileString("HUMAN""AGE""", Age, 32, Application.StartupPath + @"\Human.ini");
 
    // 텍스트박스에 ini파일에서 가져온 데이터를 넣는다
    txtName.Text = Name.ToString();
    txtAge.Text = Age.ToString();
}
cs

 

 

4. 전체 소스

 - 프로그램 전체 소스입니다 참고바랍니다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
 
namespace iniFile
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        #region ini 입력 메소드
        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
        #endregion
 
        // 저장하기 버튼 클릭 이벤트
        private void btnSave_Click(object sender, EventArgs e)
        {
            // ini파일에 등록
            // WritePrivateProfileString("카테고리", "Key값", "Value", "저장할 경로");
            WritePrivateProfileString("HUMAN""NAME", txtName.Text, Application.StartupPath + @"\Human.ini");
            WritePrivateProfileString("HUMAN""AGE", txtAge.Text, Application.StartupPath + @"\Human.ini");
        }
 
        // 불러오기 버튼 클릭 이벤트
        private void btnLoad_Click(object sender, EventArgs e)
        {
            // ini값을 집어넣을 변수 선언
            StringBuilder Name = new StringBuilder();
            StringBuilder Age = new StringBuilder();
 
            // ini파일에서 데이터를 불러옴
            // GetPrivateProfileString("카테고리", "Key값", "기본값", "저장할 변수", "불러올 경로");
            GetPrivateProfileString("HUMAN""NAME""", Name, 32, Application.StartupPath + @"\Human.ini");
            GetPrivateProfileString("HUMAN""AGE""", Age, 32, Application.StartupPath + @"\Human.ini");
 
            // 텍스트박스에 ini파일에서 가져온 데이터를 넣는다
            txtName.Text = Name.ToString();
            txtAge.Text = Age.ToString();
        }
    }
}
 
cs

 

5. 결과 화면

 - 성명에 홍길동, 나이에 23을 입력하고 저장하기 버튼을 클릭합니다

 - ini파일에 성명정보와 나이정보가 저장된 것을 확인할 수 있습니다

 

여기까지 ini파일의 입출력하는 방법에 대해서 알아봤습니다

C# 개발에 있어서 도움이 되셨으면 좋겠습니다

반응형
그리드형