C#如何取出ini配置某个Section的全部值?可以举例吗?
1条回答 默认 最新
关注 之前做过类似的,你可以参考参考,如有帮助还望采纳下哦
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 }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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