如何从ini文件中获取所有部分名称

切里拉克什

我想从 ini 文件中获取部分列表。现在我的文件中只有一个部分,下面的代码返回空值。

我尝试了使用 GetSectionNamesListA 和 GetPrivateProfileSectionNames 的各种方法。他们似乎都没有帮助

   public string[] GetSectionNames(string path)
    {
        byte[] buffer = new byte[1024];
        GetPrivateProfileSectionNames(buffer, buffer.Length, path);
        string allSections = System.Text.Encoding.Default.GetString(buffer);
        string[] sectionNames = allSections.Split('\0');
        return sectionNames;
    }

使用:

[DllImport("kernel32")]
  static extern int GetPrivateProfileSectionNames(byte[] pszReturnBuffer, int nSize, string lpFileName);

尽管存在一个部分,但我仍然返回空值。

穆罕默德·阿齐兹

最简单的方法可能是使用像INI Parser这样的库

这是使用库的示例:

var parser = new FileIniDataParser();
IniData data = parser.ReadFile("file.ini");
foreach (var section in data.Sections)
{
   Console.WriteLine(section.SectionName);
}

在您的情况下GetPrivateProfileSectionNames,不提供部分名称,因为它需要文件的完整路径。如果你给它一个相对路径,它会尝试在 Windows 文件夹中找到它。

初始化文件的名称。如果此参数为 NULL,该函数将搜索 Win.ini 文件。如果此参数不包含文件的完整路径,系统将在 Windows 目录中搜索该文件。

解决这个问题的一种方法是使用Path.GetFullPath(path)

path = Path.GetFullPath(path);

页面显示了以下内容的正确用法GetPrivateProfileSectionNames

[DllImport("kernel32")]
static extern uint GetPrivateProfileSectionNames(IntPtr pszReturnBuffer, uint nSize, string lpFileName);

public static string[] SectionNames(string path)
{
    path = Path.GetFullPath(path);
    uint MAX_BUFFER = 32767;
    IntPtr pReturnedString = Marshal.AllocCoTaskMem((int)MAX_BUFFER);
    uint bytesReturned = GetPrivateProfileSectionNames(pReturnedString, MAX_BUFFER, path);
    if (bytesReturned == 0)
        return null;
    string local = Marshal.PtrToStringAnsi(pReturnedString, (int)bytesReturned).ToString();
    Marshal.FreeCoTaskMem(pReturnedString);
    //use of Substring below removes terminating null for split
    return local.Substring(0, local.Length - 1).Split('\0');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何递归获取所有包含txt文件的目录,该文件的名称与Bash中包含目录的名称相同?

来自分类Dev

如何从目录中所有.txt文件中获取行的一部分?

来自分类Dev

如何从fbx文件中获取所有节点或多边形的名称?

来自分类Dev

如何根据另一个文件中的名称从文件中获取所有匹配项?

来自分类Dev

如何获取ICU中的所有时区名称

来自分类Dev

如何仅在类中获取所有属性名称

来自分类Dev

如何获取ICU中的所有时区名称

来自分类Dev

无论使用C#在XML文件中的级别如何,都获取具有相同标签名称的所有标签

来自分类Dev

如何检索javascript文件中的所有函数名称

来自分类Dev

如何获取该文件夹中的所有文件

来自分类Dev

如何获取所有文件的名称(在一个目录中)包含一行特定的文本?

来自分类Dev

如何将 .ini 文件中的所有键值对读入一个对象?

来自分类Dev

如何删除所有子目录中具有给定名称的所有文件?

来自分类Dev

如何获取特定类型的所有部分

来自分类Dev

写入INI文件中的部分

来自分类Dev

如何从KendoGrid获取所有列名称?

来自分类Dev

如何从名称空间获取所有密钥?

来自分类Dev

获取前n个文件的名称而不在linux中列出所有文件

来自分类Dev

如何用文件名的数字部分替换列中的所有值(所有NA)?

来自分类Dev

如何使用QSettings在ini的部分中写入文件路径

来自分类Dev

如何使用Python ConfigParser从ini文件中删除部分?

来自分类Dev

如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

来自分类Dev

如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

来自分类Dev

Bash获取所有目录中具有名称的特定文件并运行脚本

来自分类Dev

如何获取目录中的所有文件名?

来自分类Dev

如何从xslt中的目录获取所有文件

来自分类Dev

如何在IProject中获取所有文件

来自分类Dev

如何使用javafx从目录中获取所有文件

来自分类Dev

如何在javascript中获取文件对象的所有属性?

Related 相关文章

  1. 1

    如何递归获取所有包含txt文件的目录,该文件的名称与Bash中包含目录的名称相同?

  2. 2

    如何从目录中所有.txt文件中获取行的一部分?

  3. 3

    如何从fbx文件中获取所有节点或多边形的名称?

  4. 4

    如何根据另一个文件中的名称从文件中获取所有匹配项?

  5. 5

    如何获取ICU中的所有时区名称

  6. 6

    如何仅在类中获取所有属性名称

  7. 7

    如何获取ICU中的所有时区名称

  8. 8

    无论使用C#在XML文件中的级别如何,都获取具有相同标签名称的所有标签

  9. 9

    如何检索javascript文件中的所有函数名称

  10. 10

    如何获取该文件夹中的所有文件

  11. 11

    如何获取所有文件的名称(在一个目录中)包含一行特定的文本?

  12. 12

    如何将 .ini 文件中的所有键值对读入一个对象?

  13. 13

    如何删除所有子目录中具有给定名称的所有文件?

  14. 14

    如何获取特定类型的所有部分

  15. 15

    写入INI文件中的部分

  16. 16

    如何从KendoGrid获取所有列名称?

  17. 17

    如何从名称空间获取所有密钥?

  18. 18

    获取前n个文件的名称而不在linux中列出所有文件

  19. 19

    如何用文件名的数字部分替换列中的所有值(所有NA)?

  20. 20

    如何使用QSettings在ini的部分中写入文件路径

  21. 21

    如何使用Python ConfigParser从ini文件中删除部分?

  22. 22

    如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

  23. 23

    如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

  24. 24

    Bash获取所有目录中具有名称的特定文件并运行脚本

  25. 25

    如何获取目录中的所有文件名?

  26. 26

    如何从xslt中的目录获取所有文件

  27. 27

    如何在IProject中获取所有文件

  28. 28

    如何使用javafx从目录中获取所有文件

  29. 29

    如何在javascript中获取文件对象的所有属性?

热门标签

归档