【问题标题】:Best way to save low amount of configuration节省少量配置的最佳方法
【发布时间】:2013-05-16 18:24:27
【问题描述】:

我必须保存设备的配置,一位朋友告诉我,由于它只有 2(两个)字段,最好在 .txt file 上保存/读取它,而不是创建一个表。这是真的吗?
它会更快吗?还是没关系?
如果是这样,我该怎么做?
我知道如何使用System.IOStreamReader/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;
      

      然后你会在需要的地方使用设置。

      希望这有帮助!

      【讨论】:

      • 对于一个小型图书馆来说可能有点过头了(这可能有点麻烦),但在这种情况下custom configuration section 可以派上用场。
      【解决方案3】:

      在您的情况下,使用表格将是一种矫枉过正。 试想一下,您可以说使用文件直接处理文件系统,而使用表,您将处理数据库引擎,然后再处理文件系统(这是一个很大的简化)。

      您可以使用 txt 文件,然后定义您可能想要的任何格式。您可以在每一行中设置不同的设置,然后根据需要对其进行解析。 如果您使用 txt 文件,则取决于您如何解析信息。

      正如 Yaur 所建议的,在您的情况下,最好使用应用程序的 app.config 文件。

      Here您有一个示例,说明如何使用Configuration Manager访问您的设置

      【讨论】:

        【解决方案4】:

        在这种情况下使用默认设置就可以了,您只需将设置的Scope 设置为User。你可以更新它并保存它:

        Properties.Settings.Default.Writable = "new value";
        Properties.Settings.Default.Save();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-08
          • 2018-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-01
          相关资源
          最近更新 更多