在C sharp中使用IniParser对ini配置文件进行读写操作

简介: 在这篇文章记录了在C sharp 编程中使用IniParse 对ini配置文件进行读写的操作. 读取ini文件中的Mysql数据库配置文件进行数据库连接: 如果你想从一个 .ini 文件中读取配置信息,可以使用第三方库,如 IniParser。以下是如何使用 IniParser 库来实现: 首先,你需要使用 NuGet 包管理器安装 IniParser。在 Visual Studio 中,可以通过 NuGet 包管理器控制台执行以下命令: Install-Package IniParser 然后,创建一个 config.ini 文件,并添加以下内容: [Database] Server=your_server User=your_user Password=your_password Database=your_database接着,修改你的 mysqldata 类如下: using System; using IniParser; using IniParser.Model; using MySql.Data.MySqlClient; using Sunny.UI; namespace ExpressManageSystem { internal class mysqldata { private static readonly string configFile = "config.ini"; private static readonly FileIniDataParser parser = new FileIniDataParser(); private static readonly IniData configData = parser.ReadFile(configFile); public static string connection_string { get { var databaseSection = configData["Database"]; return $"server={databaseSection["Server"]};user={databaseSection["User"]};password={databaseSection["Password"]};database={databaseSection["Database"]}"; } } public MySqlConnection mySqlConnection = new MySqlConnection(connection_string); //连接数据库 public bool connect_db() { try { mySqlConnection.Open(); return true; } catch (Exception ex) { UIMessageBox.Show(ex.Message); return false; } } //关闭数据库链接 public bool close_db() { try { mySqlConnection.Close(); return true; } catch (Exception ex) { UIMessageBox.Show(ex.Message); return false; } } } }在这个修改后的代码中,使用了 IniParser 库来读取 config.ini 文件中的配置信息。这样,你就可以通过修改 config.ini 文件来更改数据库连接信息,而无需修改代码。 ...

网吧延迟启动工具以及源代码

缘由 好久没给网吧维护了,最近给日本网吧维护的时候, 由于要在工作站开机启动之后执行一些初始化程序,要用到一个延迟启动程序。(程序是前辈写的,帮了很多忙。鞠躬) 但是在日本语系统下无法正常运行 报错如下: 如果要解决该错误,需要在区域选项中,将程式区域改为中国即可。如此一来会产生一个新的问题, 某些程式会用区域来判断用户的location, 会导致一些软件无法正常运行。 于是我依葫芦画瓢,手搓了一个能在日本语系统下正常运行的延迟启动工具 功能和用法 简介 该延迟启动工具的本体只有一个exe执行文件和ini配置文件 执行文件会读取ini文件中的配置,然后执行相关任务 配置文件说明 配置文件包含TargetPath,FileExtensions,Timeout选项 TargetPath: 所需要执行的目录路径(绝对路径) FileExtenions: 需要执行的文件格式 Timeout: 延迟时间 毫秒为单位 用法 在给工作站开超级时,将Hiderun.exe 添加到系统启动项 根据你自身需求,在配置文件中“config.ini”填写相对应的路径和文件格式,以及时间。 日志 程序会在程序根目录生成log文件记录执行状态和报错,遇到问题可以在日志中查看明细。 程序执行演示 程序下载 解压密码: www.itiohub.com HideRun.zip 源代码 using System; using System.IO; using System.Diagnostics; using System.Threading; using System.Runtime.ExceptionServices; class Program { static string logFilePath; static void Main() { // 在程序根目录生成日志文件 string logFilePath = GenerateLogFilePath(); CreateLogFile(logFilePath); // 隐藏自身窗口 IntPtr handle = Process.GetCurrentProcess().MainWindowHandle; ShowWindow(handle, SW_HIDE); LogToFile(logFilePath, "延迟启动工具 By 小四 www.itiohub.com"); // 读取配置文件 var configFile = "config.ini"; var config = ReadConfig(configFile); if (config != null) { // 获取配置信息 string targetPath = config["TargetPath"]; string[] fileExtensions = config["FileExtensions"].Split(','); int timeout = int.Parse(config["Timeout"]); // 后台运行 RunInBackground(logFilePath, targetPath, fileExtensions, timeout); } else { LogToFile(logFilePath, "配置文件读取失败。 请检查配置文件config.ini是否存在"); } Thread.Sleep(5000); } //创建日志文件 static void CreateLogFile(string logFilePath) { try { using (StreamWriter sw = File.CreateText(logFilePath)) { sw.WriteLine("程序启动时间: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } } catch (Exception ex) { Console.WriteLine($"创建日志文件时发生错误: {ex.Message}"); } } //后台运行 static void RunInBackground(string logFilePath, string targetPath, string[] fileExtensions, int timeout) { try { // 在目标路径中查找并运行匹配的文件 foreach (var fileExtension in fileExtensions) { var files = Directory.GetFiles(targetPath, $"*.{fileExtension}"); foreach (var file in files) { LogToFile(logFilePath, $"运行文件: {file}"); var processStartInfo = new ProcessStartInfo(file); processStartInfo.WindowStyle = ProcessWindowStyle.Hidden; var process = Process.Start(processStartInfo); if (process != null) { // 等待超时时间 if (!process.WaitForExit(timeout)) { LogToFile(logFilePath, $"文件 {file} 运行超时。"); } // 可以添加其他处理逻辑,例如记录日志等 } else { LogToFile(logFilePath, $"无法启动文件 {file}。"); } } } // 执行完所有文件后,延迟5秒并退出 LogToFile(logFilePath, "所有文件已执行,程序将在5秒后退出。"); Thread.Sleep(5000); } catch (Exception ex) { LogToFile(logFilePath, $"发生错误: {ex.Message}"); } } //读取配置文件 static IniConfig ReadConfig(string filePath) { try { var config = new IniConfig(); var lines = File.ReadAllLines(filePath); foreach (var line in lines) { var parts = line.Split('='); if (parts.Length == 2) { config.Add(parts[0].Trim(), parts[1].Trim()); } } return config; } catch (Exception ex) { LogToFile(logFilePath, $"读取配置文件时发生错误: {ex.Message}"); return null; } } //日志文件 static void LogToFile(string logFilePath, string message) { try { using (StreamWriter sw = File.AppendText(logFilePath)) { string logMessage = $"{DateTime.Now.ToString("yyyy_MM_dd_HH_mm")}: {message}"; Console.WriteLine(logMessage); sw.WriteLine(logMessage); } } catch (Exception ex) { Console.WriteLine($"写入日志文件时发生错误: {ex.Message}"); } } //日志文件名称generate static string GenerateLogFilePath() { string fileName = $"hiderun{DateTime.Now.ToString("yyyy_MM_dd_HH_mm")}.log"; return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName); } [System.Runtime.InteropServices.DllImport("user32.dll")] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); private const int SW_HIDE = 0; } //ini配置文件 ky value class IniConfig { private readonly System.Collections.Generic.Dictionary<string, string> config; public IniConfig() { config = new System.Collections.Generic.Dictionary<string, string>(); } public string this[string key] { get { return config.ContainsKey(key) ? config[key] : null; } } public void Add(string key, string value) { if (!config.ContainsKey(key)) { config.Add(key, value); } } }

C# Classes and Objects

What is Classes in C#? Objects Access Modifiers https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/access-modifiers https://www.cnblogs.com/xinaixia/p/5775471.html Code using System; //class declaration public class Car { //instance 6 variables String name; String color; String transmission; String bodytype; int seat; int year; //constructor declaration of class public Car(String name, String color, String transmission, String bodytype, int seat, int year) { this.name = name; this.color = color; this.transmission = transmission; this.bodytype = bodytype; this.seat = seat; this.year = year; } //property 6 public String getName() { return name; } public String getColor() { return color; } public String getTransmission() { return transmission; } public String getType() { return bodytype; } public int getSeat() { return seat; } public int getYear() { return year; } //method public String ToString() { return ("This is Car detail- CarName:" + this.getName() + "\n Color :" + this.getColor() + "\n Transmission: " + this.getTransmission() + "\n Body type: " + this.getType() + "\n Seat : " + this.getSeat() + "\n Year: " + this.getYear())+"\n ================="; } //main method public static void Main(string[] args) { // 5 object Car Toyota = new Car("Toyota Rush", "Silver", "Auto", "SUV", 7, 2020); Car Bmw = new Car("BMX X1", "Silver", "Auto", "SUV", 7, 2022); Car Honda = new Car("Accord", "Black", "Auto", "Sedan", 4, 2016); Car Tesla = new Car("Tesla S", "Red", "Auto", "Sedan", 4, 2017); Car Mazda = new Car("Mazda 929 Legato", "White", "Manual", "Sedan", 4, 1980); //output Console.WriteLine(Toyota.ToString()); Console.WriteLine(Bmw.ToString()); Console.WriteLine(Honda.ToString()); Console.WriteLine(Tesla.ToString()); Console.WriteLine(Mazda.ToString()); Console.WriteLine("==============\n Thank you !"); //out put date and time DateTime now = DateTime.Now; Console.WriteLine("Print date: " + now); Console.ReadLine(); } }

C# Find the value of an element using the index

IDEA User input data Convert to index Using index number fund element vaule Output element vaule Screenshot Code using System; namespace array2d { public class array2d { public static void Main(string[] args) { //initilizing arrays string[,] platenumber = new string[5,3] { {"ZJI163","USA1008","PHA101"}, {"PJ130108", "USA1006","JAP118" }, {"MAX168", "USA1002" ,"TWD120"}, { "AZZ9756", "USA1005","KOR119" }, {"NAS1223","USA109","DDT886"} }; //wait for user input,convert to int Console.WriteLine("Welcome use DK parking system!\n Solt: 0-4 \n floor: 0-2"); Console.WriteLine("Plz type slot: "); int solt = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Plz type floor: "); int floor = Convert.ToInt32(Console.ReadLine()); // decision the length of the element if (solt < 5 && floor < 3) { string car = platenumber[solt, floor]; Console.WriteLine("Found platenumber is :" + car); } else { Console.WriteLine("\nThe value you entered does not exist"); } Console.WriteLine("Thank you !"); Console.ReadLine(); } } }

C# Multidimensional Arrays

C# Multidimensional Arrays As discussed in the previous chapter, Arrays in C# will support multi-dimensional arrays. In c#, a multidimensional array is an array that contains more than one dimension to represent the elements in a tabular format like rows and columns. In c#, multidimensional arrays can support either two or three-dimensional series. To create multi-dimensional arrays, we need to use a comma (,) separator inside the square brackets. C# Multi-Dimensional Array Declaration In c#, Multidimensional Arrays can be declared by specifying the data type of elements followed by the square brackets [] with comma (,) separator. The following are examples of creating two or three-dimensional arrays in the c# programming language. ...

C# String Contains Assessment

Question: Create a complete C# program that will simulate a log-in process. If the username and password are both correct the program will display “Log-in Successful”, otherwise it will display “Invalid Log-in details” FlowChart: C# Logical Operators: Code Answer: using System; namespace Module6 { class module6 { static void Main(string[] args) { string emailid, password; //use readline get user input Console.WriteLine("Plz enter u Emaill address :"); emailid = Console.ReadLine(); Console.WriteLine("Plz enter u Password"); password = Console.ReadLine(); //use if else to decision input data contains value if (emailid.Contains("ydsgsdg@dsadas.edu.ph") && (password.Contains("d123456"))) { Console.WriteLine("Your Log-in Was Successful!"); } else { Console.WriteLine("Invalid Log-in details"); } Console.ReadLine(); } } } Reference C# Logical Operators with Examples https://www.tutlane.com/tutorial/csharp/csharp-logical-operators-with-examples ...

搜尋文章

輸入標題、分類或文章內容

開始輸入以搜尋文章