【问题标题】:Best way to save low amount of configuration节省少量配置的最佳方法
【发布时间】:2013-05-16 18:24:27
【问题描述】:
我必须保存设备的配置,一位朋友告诉我,由于它只有 2(两个)字段,最好在 .txt file 上保存/读取它,而不是创建一个表。这是真的吗?
它会更快吗?还是没关系?
如果是这样,我该怎么做?
我知道如何使用System.IO 和StreamReader/StreeamWriter 在文本文件上Write/Read。
我只是想知道它是否会更快,以及如何读取它并将读取的值设置为配置的想法......也许使用数组并使用Split?
【问题讨论】:
标签:
c#
streamreader
streamwriter
【解决方案1】:
从性能的角度来看,这并不重要,所以不要自己动手,只需使用内置的 C# properties/app.config 实现即可。
【解决方案2】:
只是为了扩展 Yaur 提出的答案。
最好使用内置配置设置,因为它比存储在表中(我假设您在谈论数据库表)或使用您自己的配置更快(但性能可以忽略不计)并且更简单。
使用内置配置相当简单,如果你不确定它是如何完成的,网上有很多例子,所以我不打算提供一个例子。
根据信息以及您希望如何使用它,将配置存储到数据库中可能更有益,因为即使您重新安装应用程序(假设数据库位于服务器上而不是你的应用程序 - sqlce)
要记住的最后一件事是您将在哪里使用您的配置设置。内置配置设置不适用于应用程序库 (dll)。因此,如果配置设置用于库,则必须创建自己的库。
最简单的解决方法是使用 ConfigurationManager。在您的项目下创建一个 .config (xml) 文件并将其命名为与您的 dll 相同的名称(即 AttachmentProcessor.dll.config)。这是您将设置与键/值对放在一起的地方。确保将文件属性“复制到输出目录”设置为“始终复制”或“如果较新则复制”。
配置示例:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="AttachmentDirectory" value="C:\TestDir"/>
<add key="FolderSlug" value="TEST"/>
</appSettings>
</configuration>
然后在构造函数的代码中,您将读取配置文件:
var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
attachmentDirectory = appConfig.AppSettings.Settings["AttachmentDirectory"].Value;
folderSlug = appConfig.AppSettings.Settings["FolderSlug"].Value;
然后你会在需要的地方使用设置。
希望这有帮助!
【解决方案3】:
在您的情况下,使用表格将是一种矫枉过正。
试想一下,您可以说使用文件直接处理文件系统,而使用表,您将处理数据库引擎,然后再处理文件系统(这是一个很大的简化)。
您可以使用 txt 文件,然后定义您可能想要的任何格式。您可以在每一行中设置不同的设置,然后根据需要对其进行解析。
如果您使用 txt 文件,则取决于您如何解析信息。
正如 Yaur 所建议的,在您的情况下,最好使用应用程序的 app.config 文件。
Here您有一个示例,说明如何使用Configuration Manager访问您的设置
【解决方案4】:
在这种情况下使用默认设置就可以了,您只需将设置的Scope 设置为User。你可以更新它并保存它:
Properties.Settings.Default.Writable = "new value";
Properties.Settings.Default.Save();