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日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改