### Install IniFileParser Package Source: https://github.com/softcircuits/inifileparser/blob/master/Readme.md Use the NuGet Package Manager to install the SoftCircuits.IniFileParser library. ```powershell Install-Package SoftCircuits.IniFileParser ``` -------------------------------- ### Get INI File Sections and Settings Source: https://context7.com/softcircuits/inifileparser/llms.txt Illustrates how to retrieve all section names from an INI file using `GetSections()` and how to get all settings within a specific section as `IniSetting` objects using `GetSectionSettings()`. ```csharp using SoftCircuits.IniFileParser; IniFile file = new IniFile(); file.Load("config.ini"); // Get all section names in the INI file IEnumerable sections = file.GetSections(); foreach (string sectionName in sections) { Console.WriteLine($"Section: [{sectionName}]"); } // Output: // Section: [General] // Section: [Database] // Get all settings within a specific section IEnumerable settings = file.GetSectionSettings("Database"); foreach (IniSetting setting in settings) { Console.WriteLine($" {setting.Name} = {setting.Value}"); } // Output: // Server = localhost // Port = 5432 // UseSSL = true // IniSetting.ToString() formats as "Name=Value" for INI file writing IniSetting setting = settings.First(); string formatted = setting.ToString(); // Returns: "Server=localhost" ``` -------------------------------- ### Stream-Based Operations with IniFileParser Source: https://context7.com/softcircuits/inifileparser/llms.txt Illustrates how to use `StreamReader` and `StreamWriter` for advanced scenarios like in-memory processing or network streams. Includes examples for saving to and loading from `MemoryStream`, as well as asynchronous stream operations. ```csharp using SoftCircuits.IniFileParser; using System.IO; using System.Text; IniFile file = new IniFile(); file.SetSetting("Section", "Key", "Value"); // Save to a MemoryStream using (MemoryStream stream = new MemoryStream()) using (StreamWriter writer = new StreamWriter(stream)) { file.Save(writer); writer.Flush(); byte[] data = stream.ToArray(); string content = Encoding.UTF8.GetString(data); // content: "[Section]\nKey=Value\n" } // Load from a MemoryStream byte[] iniData = Encoding.UTF8.GetBytes("[Config]\nSetting=Test"); using (MemoryStream stream = new MemoryStream(iniData)) using (StreamReader reader = new StreamReader(stream)) { IniFile loaded = new IniFile(); loaded.Load(reader); string value = loaded.GetSetting("Config", "Setting", ""); // Returns: "Test" } // Async stream operations using (StreamWriter writer = new StreamWriter("config.ini")) { await file.SaveAsync(writer); } using (StreamReader reader = new StreamReader("config.ini")) { await file.LoadAsync(reader); } ``` -------------------------------- ### Get All Settings in a Section Source: https://github.com/softcircuits/inifileparser/blob/master/Readme.md Retrieve all settings within a specified section of the INI file. ```csharp IEnumerable settings = file.GetSectionSettings(sectionName); ``` -------------------------------- ### Get All Sections from INI File Source: https://github.com/softcircuits/inifileparser/blob/master/Readme.md Retrieve a collection of all section names present in the INI file. ```csharp IEnumerable sections = file.GetSections(); ``` -------------------------------- ### Create and Write INI File Settings Source: https://context7.com/softcircuits/inifileparser/llms.txt Demonstrates creating a new INI file and setting various typed values (string, int, double, bool, DateTime) in default and custom sections. Includes synchronous and asynchronous save operations. ```csharp using SoftCircuits.IniFileParser; // Create a new INI file and set various typed values IniFile file = new IniFile(); // Write settings to the default "General" section file.SetSetting(IniFile.DefaultSectionName, "AppName", "MyApplication"); file.SetSetting(IniFile.DefaultSectionName, "Version", "1.0.0"); file.SetSetting(IniFile.DefaultSectionName, "MaxConnections", 100); file.SetSetting(IniFile.DefaultSectionName, "Timeout", 30.5); file.SetSetting(IniFile.DefaultSectionName, "DebugMode", false); file.SetSetting(IniFile.DefaultSectionName, "LastUpdated", DateTime.Now); // Write settings to a custom section file.SetSetting("Database", "Server", "localhost"); file.SetSetting("Database", "Port", 5432); file.SetSetting("Database", "UseSSL", true); // Save to file file.Save("config.ini"); // Async version available await file.SaveAsync("config.ini"); // Output INI file contents: // [General] // AppName=MyApplication // Version=1.0.0 // MaxConnections=100 // Timeout=30.5 // DebugMode=false // LastUpdated=2024-01-15 14:30:45.123 // // [Database] // Server=localhost // Port=5432 // UseSSL=true ``` -------------------------------- ### Read INI File Settings with Defaults Source: https://context7.com/softcircuits/inifileparser/llms.txt Shows how to load an INI file and retrieve values using `GetSetting()`. The default parameter provides a fallback value if the setting is missing or cannot be converted, ensuring type safety. ```csharp using SoftCircuits.IniFileParser; IniFile file = new IniFile(); file.Load("config.ini"); // Read string value (default: empty string if not found) string appName = file.GetSetting(IniFile.DefaultSectionName, "AppName", string.Empty); // Returns: "MyApplication" // Read integer value (default: 0 if not found or invalid) int maxConnections = file.GetSetting(IniFile.DefaultSectionName, "MaxConnections", 0); // Returns: 100 // Read double value (default: 0.0 if not found or invalid) double timeout = file.GetSetting(IniFile.DefaultSectionName, "Timeout", 0.0); // Returns: 30.5 // Read boolean value (default: false if not found or invalid) bool debugMode = file.GetSetting(IniFile.DefaultSectionName, "DebugMode", false); // Returns: false // Read DateTime value (default: DateTime.MinValue if not found or invalid) DateTime lastUpdated = file.GetSetting(IniFile.DefaultSectionName, "LastUpdated", DateTime.MinValue); // Returns: 2024-01-15 14:30:45.123 // Read from custom section string server = file.GetSetting("Database", "Server", "127.0.0.1"); // Returns: "localhost" // Async loading available await file.LoadAsync("config.ini"); ``` -------------------------------- ### Write INI File Settings Source: https://github.com/softcircuits/inifileparser/blob/master/Readme.md Create an IniFile instance, set settings using overloaded methods for different data types, and save to a file. ```csharp // Write values IniFile file = new IniFile(); file.SetSetting(IniFile.DefaultSectionName, "Name", "Bob Smith"); file.SetSetting(IniFile.DefaultSectionName, "Age", 34); file.SetSetting(IniFile.DefaultSectionName, "Rating", 123.45); file.SetSetting(IniFile.DefaultSectionName, "Active", true); file.Save(path); ``` -------------------------------- ### Read INI File Settings Source: https://github.com/softcircuits/inifileparser/blob/master/Readme.md Load an INI file into an IniFile instance and retrieve settings using GetSetting, providing default values for missing or invalid settings. ```csharp // Read values IniFile file = new IniFile(); file.Load(path); string name = file.GetSetting(IniFile.DefaultSectionName, "Name", string.Empty); int age = file.GetSetting(IniFile.DefaultSectionName, "Age", 0); double rating = file.GetSetting(IniFile.DefaultSectionName, "Rating", 0.0); bool active = file.GetSetting(IniFile.DefaultSectionName, "Active", false); ``` -------------------------------- ### Encoding Support for IniFileParser Source: https://context7.com/softcircuits/inifileparser/llms.txt Shows how to load and save INI files using specific character encodings like UTF-8 and UTF-16, essential for internationalization. It also covers loading with byte order mark detection and asynchronous operations. ```csharp using SoftCircuits.IniFileParser; using System.Text; IniFile file = new IniFile(); file.SetSetting("General", "Greeting", "Hello, World!"); // Save with specific encoding file.Save("config.ini", Encoding.UTF8); file.Save("config-utf16.ini", Encoding.Unicode); // Load with specific encoding file.Load("config.ini", Encoding.UTF8); // Load with byte order mark detection file.Load("config.ini", detectEncodingFromByteOrderMarks: true); // Load with both encoding and BOM detection file.Load("config.ini", Encoding.UTF8, detectEncodingFromByteOrderMarks: true); // Async versions available await file.SaveAsync("config.ini", Encoding.UTF8); await file.LoadAsync("config.ini", Encoding.UTF8); ``` -------------------------------- ### Configure Custom String Comparison in C# Source: https://context7.com/softcircuits/inifileparser/llms.txt Pass a StringComparer to the IniFile constructor to toggle between case-insensitive and case-sensitive key lookups. ```csharp using SoftCircuits.IniFileParser; // Default: case-insensitive (CurrentCultureIgnoreCase) IniFile defaultFile = new IniFile(); defaultFile.SetSetting("General", "UserName", "admin"); string value1 = defaultFile.GetSetting("general", "username", ""); // Returns: "admin" string value2 = defaultFile.GetSetting("GENERAL", "USERNAME", ""); // Returns: "admin" // Case-sensitive comparison using StringComparer.Ordinal IniFile caseSensitiveFile = new IniFile(StringComparer.Ordinal); caseSensitiveFile.SetSetting("General", "UserName", "admin"); string value3 = caseSensitiveFile.GetSetting("General", "UserName", ""); // Returns: "admin" string value4 = caseSensitiveFile.GetSetting("general", "username", ""); // Returns: "" (not found) string value5 = caseSensitiveFile.GetSetting("GENERAL", "USERNAME", ""); // Returns: "" (not found) ``` -------------------------------- ### Configure Custom Boolean Options in C# Source: https://github.com/softcircuits/inifileparser/blob/master/Readme.md Define custom boolean word mappings and integer interpretation rules for the IniFile parser. ```cs BoolOptions options = new BoolOptions(StringComparer.CurrentCultureIgnoreCase); options.SetBoolWords(new[] { new BoolWord("sure", true), new BoolWord("okay", true), new BoolWord("yeppers", true), new BoolWord("nope", false), new BoolWord("nah", false), new BoolWord("nopers", false), }); options.NonZeroNumbersAreTrue = true; IniFile file = new IniFile(StringComparer.CurrentCultureIgnoreCase, options); ``` -------------------------------- ### Customize DateTime Formatting in IniFileParser Source: https://context7.com/softcircuits/inifileparser/llms.txt Demonstrates how to set and customize the DateTime format for storing and retrieving DateTime values. The default format is 'yyyy-MM-dd HH:mm:ss.fff'. Remember to reset the format to default when reading values stored with the default format. ```csharp using SoftCircuits.IniFileParser; IniFile file = new IniFile(); // Use default DateTime format: "yyyy-MM-dd HH:mm:ss.fff" file.SetSetting("Timestamps", "Created", new DateTime(2024, 1, 15, 14, 30, 45, 123)); // Stored as: "2024-01-15 14:30:45.123" // Customize DateTime format file.DateTimeFormat = "MM/dd/yyyy"; file.SetSetting("Timestamps", "Modified", new DateTime(2024, 6, 20)); // Stored as: "06/20/2024" file.Save("timestamps.ini"); // Reading requires matching format file.Load("timestamps.ini"); DateTime created = file.GetSetting("Timestamps", "Created", DateTime.MinValue); // Note: Reading "Created" requires resetting DateTimeFormat to default first file.DateTimeFormat = IniFile.DefaultDateTimeFormat; created = file.GetSetting("Timestamps", "Created", DateTime.MinValue); // Returns: 2024-01-15 14:30:45.123 ``` -------------------------------- ### Delete Sections and Settings in C# Source: https://context7.com/softcircuits/inifileparser/llms.txt Use DeleteSection and DeleteSetting to remove data from an INI file. Clear can be used to reset the entire file structure. ```csharp using SoftCircuits.IniFileParser; IniFile file = new IniFile(); file.Load("config.ini"); // Delete an entire section and all its settings bool sectionDeleted = file.DeleteSection("Database"); // Returns: true if section existed and was deleted // Delete a specific setting from a section bool settingDeleted = file.DeleteSetting(IniFile.DefaultSectionName, "DebugMode"); // Returns: true if setting existed and was deleted // Clear all sections, settings, and comments file.Clear(); // Save changes to disk file.Save("config.ini"); ``` -------------------------------- ### Handle Custom Boolean Words in C# Source: https://context7.com/softcircuits/inifileparser/llms.txt Use BoolOptions to define custom strings that represent true or false values. This allows for localized or domain-specific boolean configuration. ```csharp using SoftCircuits.IniFileParser; // Create custom boolean options BoolOptions options = new BoolOptions(StringComparer.CurrentCultureIgnoreCase); // Replace default boolean words with custom words options.SetBoolWords(new[] { new BoolWord("yes", true), new BoolWord("no", false), new BoolWord("enabled", true), new BoolWord("disabled", false), new BoolWord("active", true), new BoolWord("inactive", false), }); // Control whether numeric values are interpreted as booleans // (non-zero = true, zero = false) options.NonZeroNumbersAreTrue = true; // Create IniFile with custom options IniFile file = new IniFile(StringComparer.CurrentCultureIgnoreCase, options); // Boolean values will be written using the first true/false words file.SetSetting("Settings", "Feature1", true); // Written as "yes" file.SetSetting("Settings", "Feature2", false); // Written as "no" file.Save("config.ini"); // Reading values file.Load("config.ini"); bool feature1 = file.GetSetting("Settings", "Feature1", false); // Returns: true bool feature2 = file.GetSetting("Settings", "Feature2", true); // Returns: false // Custom words are recognized when reading // If INI contains "Feature3=enabled", it reads as true // If INI contains "Feature4=inactive", it reads as false ``` -------------------------------- ### Manage INI Comments in C# Source: https://context7.com/softcircuits/inifileparser/llms.txt The Comments collection allows adding lines that persist in the file. The CommentCharacter property can be modified to support different comment markers. ```csharp using SoftCircuits.IniFileParser; IniFile file = new IniFile(); // Add comments (will be written at the top of the file) file.Comments.Add(" Application Configuration File"); file.Comments.Add(" Last modified: 2024-01-15"); file.Comments.Add(""); file.SetSetting(IniFile.DefaultSectionName, "AppName", "MyApp"); file.Save("config.ini"); // Output INI file: // ; Application Configuration File // ; Last modified: 2024-01-15 // ; // // [General] // AppName=MyApp // Change the comment character from ';' to '#' IniFile customFile = new IniFile(); customFile.CommentCharacter = '#'; customFile.Comments.Add(" This uses hash comments"); customFile.SetSetting(IniFile.DefaultSectionName, "Setting", "Value"); customFile.Save("custom.ini"); // Output INI file: // # This uses hash comments // // [General] // Setting=Value ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.