不想覆盖我的ini文件

时间:2013-11-13 13:49:11

标签: c# user-interface ini

我正在使用ini文件将我的配置存储在我的c#gui中。 但是当我再次启动我的gui并保存配置时,之前保存的配置会被覆盖。 有没有办法继续保存配置?

2 个答案:

答案 0 :(得分:1)

您想使用app.config文件而不是.ini。您可以使用ConfigurationManager命名空间中的System.Configuration访问其中的设置。您甚至可以通过创建从ConfigurationSection继承的类来创建自定义配置节。这也将为您提供对配置文件的智能支持。

其中一个例子(它使用的是asp.net,但适用于任何.net代码)是here

修改:重新阅读您的问题,我不清楚您是否尝试保存应用程序设置(app.config),或者您是否尝试保存会话数据到磁盘(保存记录或序列化对象)。如果是前者,请查看app.config。您甚至可以有多个项目设置相同的“设置”但具有不同的值(例如具有多个SQL连接字符串),然后通过您从用户获得的某个参数调用它们。

如果您正在尝试保存会话数据/状态,那么您希望序列化您的对象 - 查看序列化/反序列化(许多可用选项)和System.IO命名空间以保持磁盘。

答案 1 :(得分:0)

防止每次覆盖同一文件的唯一方法是使文件名称唯一,例如。

FileName<TimeStamp>.ini

或者

FileName<Guid>.ini

或者您甚至可以使用重复文件执行Windows所做的操作,并检查已存在的文件数量,并在最后附加一个新数字,例如。

FileName.ini
FileName1.ini
FileName2.ini

我个人会选择时间戳/ GUID方法。这是一些示例代码

class Program
{
    static void Main()
    {
        for (int i = 0; i <= 10; i++)
        {
            SaveConfiguration();
            Thread.Sleep(500);
        }
    }

    private static void SaveConfiguration()
    {
        string fileName = System.IO.Path.Combine(@"Config\File\Dir", String.Format("Config{0:yyyyMMddHHmmss}.ini", DateTime.UtcNow));
        System.IO.File.WriteAllText(fileName, "File contents");
    }
}