m0_58015531 2021-05-13 20:29 采纳率: 100%
浏览 26
已结题

C#如何取出ini配置某个Section的全部值?

C#如何取出ini配置某个Section的全部值?可以举例吗?

  • 写回答

1条回答 默认 最新

  • 小兔子编程 青少年编程领域优质作者 2021-05-13 20:44
    关注

    之前做过类似的,你可以参考参考,如有帮助还望采纳下哦

     

    using System;
    using System.Text;
    using System.IO;
    using System.Runtime.InteropServices;
    using System.Collections.Generic;
    public class OperateIniFile
        {
            private static String filePath = "";
    #region API函数声明
    
            [DllImport("kernel32")]
            private static extern long WritePrivateProfileString(string section, string key,
                string val, string filePath);
          //需要调用GetPrivateProfileString的重载
            [DllImport("kernel32", EntryPoint = "GetPrivateProfileString")]
            private static extern long GetPrivateProfileString(string section, string key,
                string def, StringBuilder retVal, int size, string filePath);
    
            [DllImport("kernel32", EntryPoint = "GetPrivateProfileString")]
            private static extern uint GetPrivateProfileStringA(string section, string key, 
                string def, Byte[] retVal, int size, string filePath);
    
            #endregion
            public static List<string> ReadSections()
            {
                return ReadSections(filePath);
            }
    
            public static List<string> ReadSections(string iniFilename)
            {
                List<string> result = new List<string>();
                Byte[] buf = new Byte[65536];
                uint len = GetPrivateProfileStringA(null, null, null, buf, buf.Length, iniFilename);
                int j = 0;
                for (int i = 0; i < len; i++)
                    if (buf[i] == 0)
                    {
                        result.Add(Encoding.Default.GetString(buf, j, i - j));
                        j = i + 1;
                    }
                return result;
            }
    
            public static List<string> ReadKeys(String SectionName)
            {
                return ReadKeys(SectionName, filePath);
            }
    
            public static List<string> ReadKeys(string SectionName, string iniFilename)
            {
                List<string> result = new List<string>();
                Byte[] buf = new Byte[65536];
                uint len = GetPrivateProfileStringA(SectionName, null, null, buf, buf.Length, iniFilename);
                int j = 0;
                for (int i = 0; i < len; i++)
                    if (buf[i] == 0)
                    {
                        result.Add(Encoding.Default.GetString(buf, j, i - j));
                        j = i + 1;
                    }
                return result;
            }
    public static void SetFilePath(String filepath)
            {
                filePath = filepath;
            }
            #region 读Ini文件
    
            public static string ReadIniData(string Section, string Key, string NoText)
            {
                return ReadIniData(Section, Key, NoText, filePath);
            }
            public static string ReadIniData(string Section, string Key, string NoText, string iniFilePath)
            {
                if (File.Exists(iniFilePath))
                {
                    StringBuilder temp = new StringBuilder(1024);
                    GetPrivateProfileString(Section, Key, NoText, temp, 1024, iniFilePath);
                    return temp.ToString();
                }
                elsereturn String.Empty;
            }
    
            #endregion
    
            #region 写Ini文件
    
            public static bool WriteIniData(string Section, string Key, string Value)
            {
                return WriteIniData(Section, Key, Value, filePath);
            }
            public static bool WriteIniData(string Section, string Key, string Value, string iniFilePath)
            {
                if (File.Exists(iniFilePath))
                {
                    long OpStation = WritePrivateProfileString(Section, Key, Value, iniFilePath);
                    if (OpStation == 0)
                        return false;
                    elsereturn true;
                }
                elsereturn false;
            }
            #endregion
        }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月3日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line