使用ini文件

时间:2015-06-25 10:42:44

标签: c#

我有一个包含多个名称的List,我想借助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文件编辑字符串和整数,但我还想添加或删除列表中的项目,但我不知道如何。

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

制作文件:

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

写文件:

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

要阅读文件:

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

`

1 个答案:

答案 0 :(得分:0)

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

有几个字符浮现在脑海中,最自然的是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();

有关其他合适控制字符的讨论,请参阅here

  

数据结构

     

分隔符(文件,组,记录和单位:FS,GS,RS和US)是   通常在磁带上构建数据,以便进行模拟   打孔卡。介质结束(EM)警告磁带(或其他   记录媒体)即将结束。虽然许多系统使用CR / LF和TAB   结构化数据,可能会遇到分隔符控件   需要结构化的数据中的字符。分隔符控件   字符不会超载;除了以外没有一般用途   将数据分成结构化分组。他们的数值是   与空间角色相邻,可以被视为成员   该组,作为单词分隔符。