欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 讀寫ini文件操作實(shí)現(xiàn)

 更新時間:2025年01月21日 11:47:50   作者:Love樸啾啾  
本文主要介紹了C# 讀寫ini文件操作實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在C#應(yīng)用程序中,常將INI文件作為配置文件,用于存儲應(yīng)用程序的設(shè)置和參數(shù)。

一、INI文件結(jié)構(gòu)

INI文件結(jié)構(gòu)簡單,由節(jié)(Sections)和鍵值對(Key-Value Pairs)組成。每個節(jié)由方括號包圍,例如[SectionName],而鍵值對則是以等號=分隔的字符串,例如Key=Value。每個節(jié)都包含一個或多個鍵值對,用于存儲相關(guān)的配置信息。

INI文件示例:

[AmplifierForm] 
ResInitialize=0.5,0.7,0.5,0.6,0.6

[OffSignalForm] 
ResInitialize=0.5,0.7,0.5,0.6,0.6
ResColl=1.3,1.5

該示例中有兩個節(jié):AmplifierForm、OffSignalForm,每個節(jié)下都有一些鍵值對,用于存儲配置信息。

二、讀取INI文件中的數(shù)據(jù)

C#命名空間中沒有直接讀寫INI的類,但在"kernel32.dll"文件中有Win32的API函數(shù)–WritePrivateProfileString()和GetPrivateProfileString(),可操作ini文件。

靜態(tài)操作使用類

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace FileOperationsDemo
{
    public class ReadWriteINI
    {
        #region API函數(shù)聲明

        /// <summary>
        /// 寫入ini文件
        /// </summary>
        /// <param name="section">節(jié)點(diǎn)名稱</param>
        /// <param name="key">鍵</param>
        /// <param name="val">值</param>
        /// <param name="filePath">ini路徑</param>
        /// <returns>0失敗/其他成功</returns>
        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="section">節(jié)點(diǎn)名稱,[]內(nèi)的段落名</param>
        /// <param name="key">鍵</param>
        /// <param name="def">值(未讀取到數(shù)據(jù)時設(shè)置的默認(rèn)返回值)</param>
        /// 對應(yīng)API函數(shù)的def參數(shù),它的值由用戶指定,是當(dāng)在配置文件中沒有找到具體的Value時,就用def的值來代替??梢詾榭?
        /// <param name="retVal">讀取到的結(jié)果值</param>
        /// <param name="size">讀取緩沖區(qū)大小</param>
        /// <param name="filePath">ini配置文件的路徑加ini文件名</param>
        /// <returns>讀取到的字節(jié)數(shù)量</returns>
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
        #endregion

        /// <summary>
        /// 寫INI,添加新節(jié)點(diǎn)、鍵值,及編輯修改鍵對應(yīng)的值
        /// </summary>
        /// <param name="in_filename">ini配置文件的路徑加ini文件名</param>
        /// <param name="Section">節(jié)點(diǎn)名稱,[]內(nèi)的段落名</param>
        /// <param name="Key">鍵</param>
        /// <param name="Value">值</param>
        public static bool IniFile_SetVal(string in_filename, string Section, string Key, string Value)
        {
            if (File.Exists(in_filename))
            {
                // 調(diào)用winapi函數(shù)將Key=Value寫入Section節(jié)點(diǎn)下
                long len = WritePrivateProfileString(Section, Key, Value, in_filename);
                if (len == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            else
            {
                return true;
            }
        }
        /// <summary>
        /// 讀ini
        /// </summary>
        /// <param name="in_filename">ini配置文件的路徑加ini文件名</param>
        /// <param name="Section">節(jié)點(diǎn)名稱,[]內(nèi)的段落名</param>
        /// <param name="Key">鍵</param>
        /// <returns></returns>
        public static string IniFile_GetVal(string in_filename, string Section, string Key)
        {
            if (File.Exists(in_filename))
            {
                // 聲明接收的數(shù)據(jù)
                StringBuilder builder = new StringBuilder(1024);
                // 調(diào)用winapi函數(shù)讀取Section節(jié)點(diǎn)下Key的值
                int len = GetPrivateProfileString(Section, Key, "", builder, 1024, in_filename);
                if (len == 0)
                    return "1";
                else
                    return (builder.ToString());
            }
            else
                return string.Empty;
        }
    }
}

操作示例

        /// <summary>
        /// 讀取ini文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {
            string pathName = Application.StartupPath + "\\config\\ResOriginal.ini";
            string resStarter = ReadWriteINI.IniFile_GetVal(pathName, "SelfCheckFace", "ResInitialize");
            string[] resInitLine = resStarter.Split(',');
            for (int ii = 0; ii < resInitLine.Length; ii++)
            {
                richTextBox2.AppendText(resInitLine[ii] + "\n");
            }
        }
        /// <summary>
        /// 寫入ini文件,新建或編輯
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            string pathName = Application.StartupPath + "\\config\\ResOriginal.ini";
            ReadWriteINI.IniFile_SetVal(pathName, "SelfCheckFace", "ResInitialize", "1,2,3,4,5");
            
            string[] resInitLine = richTextBox2.Lines;
            string tempWrite = string.Join(",", resInitLine);
            tempWrite=tempWrite.Remove(tempWrite.Length-1);
            ReadWriteINI.IniFile_SetVal(pathName, "SelfCheckF", "ResInitialize", tempWrite);
        }

在這里插入圖片描述

到此這篇關(guān)于C# 讀寫ini文件操作實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C# 讀寫ini內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • C#抽象類和接口的區(qū)別分析

    C#抽象類和接口的區(qū)別分析

    這篇文章主要介紹了C#抽象類和接口的區(qū)別,詳細(xì)的分析了抽象類與接口的概念與特性,并對二者作出比對說明,需要的朋友可以參考下
    2014-10-10
  • 詳解c# PLINQ中的分區(qū)

    詳解c# PLINQ中的分區(qū)

    這篇文章主要介紹了c# PLINQ中的分區(qū)的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • WPF封裝實(shí)現(xiàn)懶加載下拉列表控件(支持搜索)

    WPF封裝實(shí)現(xiàn)懶加載下拉列表控件(支持搜索)

    WPF這種懶加載的控件未找到現(xiàn)成可用的組件,所以本文我們就自己封裝一個懶加載和支持模糊過濾的下拉列表控件,有需要的小伙伴可以參考一下
    2025-04-04
  • c# 可疑文件掃描代碼(找到木馬)(簡)

    c# 可疑文件掃描代碼(找到木馬)(簡)

    c# 可疑文件掃描代碼(找到木馬),需要的朋友可以參考下。
    2010-05-05
  • C# 中DateTime 的使用技巧匯總

    C# 中DateTime 的使用技巧匯總

    本文主要介紹了DateTime的使用技巧,包括獲取本周、上周、下周、本月、上個月、下個月、本季度、上季度、下季度、本年度、上年度、下年度等多個方法,分享給大家,希望對大家有所幫助。
    2016-04-04
  • WinForm自定義控件應(yīng)用實(shí)例

    WinForm自定義控件應(yīng)用實(shí)例

    這篇文章主要介紹了WinForm自定義控件應(yīng)用實(shí)例,非常實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • C#生成比較短的Token字符串

    C#生成比較短的Token字符串

    這篇文章介紹了C#生成Token字符串的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#無損高質(zhì)量壓縮圖片代碼

    C#無損高質(zhì)量壓縮圖片代碼

    這篇文章主要為大家詳細(xì)介紹了C#無損高質(zhì)量壓縮圖片代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法

    C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法

    這篇文章主要介紹了C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法,結(jié)合實(shí)例形式分析了C#瀏覽器事件響應(yīng)及文件操作相關(guān)技巧,需要的朋友可以參考下
    2017-05-05
  • 區(qū)分c# 前臺和后臺線程

    區(qū)分c# 前臺和后臺線程

    這篇文章主要介紹了c# 前臺線程和后臺線程的區(qū)別與聯(lián)系,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評論