반응형
* 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 시 어떤 내용을 읽어 오는지를 참조 하기 위해...
반응형
'C# Programming' 카테고리의 다른 글
[C#] Excel File Write & Read 예제... (0) | 2019.09.28 |
---|---|
[C#] File Create & Delete & Read & Write 예제 (0) | 2019.09.25 |
[C#] 레지스트리(Registry) Create , Read, Write, Delete (0) | 2019.09.22 |
[C#] 소스 코드 동적 컴파일 예제 (0) | 2019.09.21 |
[C#] 객체 파일 저장 및 불러오기 예제 (Serialization) (0) | 2019.09.19 |