1

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

4

2 回答 2

1

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

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

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

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

于 2013-11-13T13:55:28.973 回答
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");
    }
}
于 2013-11-13T14:10:38.633 回答