使用ini文件读取和编辑列表

本文关键字:编辑 列表 读取 ini 文件 使用 | 更新日期: 2023-09-27 17:59:32

我有一个包含多个名称的列表,我想在ini文件的帮助下添加或删除其中的一些名称。我更喜欢ini文件,但如果它不可能或只是非常硬,另一种配置文件也可以。

如果有任何帮助的话,这是我的ini类中的代码。

private string _filePath;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section,
    string key,
    string val,
    string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,
    string key,
    string def,
    StringBuilder retVal,
    int size,
    string filePath);
public clsINI(string filePath)
{
    _filePath = filePath;
}
public void Write(string section, string key, string value)
{
    try
    {
        WritePrivateProfileString(section, key, value, _filePath);
    }
    catch {}
}
public string Read(string section, string key)
{
    try
    {
        var sb = new StringBuilder(255);
        GetPrivateProfileString(section, key, "", sb, 255, _filePath);
        return sb.ToString();
    }
    catch
    {
        return null;
    }
}

目前,我可以用ini文件编辑字符串和int,但我也想添加或删除列表中的项目,但我不知道如何添加或删除。

在这里,我添加字符串用户名作为示例:

制作文件:

    `_cINI = new clsINI(Path.Combine(Application.StartupPath, "settings.ini"));`

写入文件:

    `username = "";
    _cINI.Write("Settings", "UserName", username); 

读取文件:

    `username = _cINI.Read("Settings", "Username"); `   

`

使用ini文件读取和编辑列表

Ini文件中的元素是字符串。要创建一个包含字符串列表的字符串,您需要决定一个分隔符。

脑海中浮现出几个字符,最自然的是TabVTab字符:'t'v。其他也有可能,见下文!唯一的问题是,确保它们不会出现在数据中。

因此,当你不清楚自己会储存什么和不会储存什么时,经常使用的commassemicolons并不是很好的选择。。

让我们举一个例子:

我们从一个奇怪而神秘的名字列表开始:

  List<string> EC = new List<string>() 
                  { "FX Huberman", "Kitty Collins", "Swede Anderson", "Cody Jarrett", };

现在,我们用Tab字符作为分隔符将它们连接起来,并将它们写入我们的文件::

  _cINI.Write("Settings", "EoC", string.Join("'t", EC.ToArray()));

最后,我们可以把它读回来,也许可以读到另一个列表中,用Tab字符再次拆分:

  List<string> FC = _cINI.Read("Settings", "EoC").Split(''t').ToList();

有关其他合适的控制特性的讨论,请参见此处:

数据结构化

分隔符(文件、组、记录和单位:FS、GS、RS和US)为模拟而构造数据,通常在磁带上穿孔卡片。介质结束(EM)警告磁带(或其他记录介质)正在结束。虽然许多系统使用CR/LF和TAB结构化数据,可能会遇到分隔符控制数据中需要结构化的字符。分离器控制字符不会过载;除了以将数据分离为结构化分组。它们的数值为与可以被视为成员的空格字符相邻作为单词分隔符。