using System; using System.IO; using System.Collections.Generic; class Program { static void Main() { string iniFilePath = "application.ini"; // ÆÄÀÏ °æ·Î¸¦ ÀûÀýÈ÷ ¼öÁ¤Çϼ¼¿ä // INI ÆÄÀÏ Àбâ Dictionary> iniData = ReadIniFile(iniFilePath); // INI ÆÄÀÏ¿¡¼­ °ªÀ» °¡Á®¿À±â string server = iniData["Database"]["Server"]; string username = iniData["Database"]["Username"]; Console.WriteLine($"Server: {server}"); Console.WriteLine($"Username: {username}"); // INI ÆÄÀÏ¿¡ ¾²±â iniData["Application"]["LogLevel"] = "INFO"; // °ªÀ» º¯°æÇϰųª Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. WriteIniFile(iniFilePath, iniData); } static Dictionary> ReadIniFile(string filePath) { var iniData = new Dictionary>(); string currentSection = null; foreach (string line in File.ReadLines(filePath)) { if (line.StartsWith("[") && line.EndsWith("]")) { currentSection = line.Trim('[', ']'); iniData[currentSection] = new Dictionary(); } else if (!string.IsNullOrWhiteSpace(currentSection)) { string[] parts = line.Split('='); if (parts.Length == 2) { string key = parts[0].Trim(); string value = parts[1].Trim(); iniData[currentSection][key] = value; } } } return iniData; } static void WriteIniFile(string filePath, Dictionary> iniData) { using (var writer = new StreamWriter(filePath)) { foreach (var section in iniData) { writer.WriteLine($"[{section.Key}]"); foreach (var kvp in section.Value) { writer.WriteLine($"{kvp.Key}={kvp.Value}"); } } } } }