如何写入文本文件键和值并将其读回?

时间:2015-12-08 02:24:18

标签: c# .net winforms

我以新的形式

private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            label1.Text = "Updating Settings File";
            label1.Visible = true;
            w = new StreamWriter(AuthenticationFileName,true);
            w.WriteLine(cTextBox1.Text);
            w.Close();
            timer1.Start();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            button4.Enabled = false;
            label1.Text = "Updating Settings File";
            label1.Visible = true;
            w = new StreamWriter(AuthenticationFileName,true);
            w.WriteLine(cTextBox2.Text);
            w.Close();
            timer1.Start();
        }

然后在form1中:

string[] lines = File.ReadAllLines(Authentication.AuthenticationFileName);
apiKey = lines[0];
userid = lines[1];
jsonfiledirectory = lines[2];

但问题是可能存在apiKey,userid和jsonfiledirectory不会像现在一样的顺序[0] [1] [2] 所以只需创建WriteLine我想为每一行添加一个键和一个值,例如文本文件将是这样的:

apikey = 435345erfsefs54
userid = myttt@walla.com
jsonfiledirectory = c:\

所以当我回读文本文件时,无论行的顺序如何。

2 个答案:

答案 0 :(得分:2)

如何使用Json.Net(http://www.newtonsoft.com/json),创建一个包含您想要序列化/反序列化的属性的类,然后使用Json.Net来处理它们?

这很简单,我为你做了一个小提琴:https://dotnetfiddle.net/lkkLUv

基本上创建一个类

public class Settings {
    public string ApiKey { get; set;}
    public string UserId { get; set;}
    public string JsonFileDirectory { get; set;}
}

然后阅读它(文件当然需要在json中正确格式化)

Settings settings = JsonConvert.DeserializeObject<Settings>(settingsExample);

其中settingsExample包含从文件读取的字符串(如果需要,可以使用json直接从文件中读取)

保存,只需使用JsonConvert.Serialize(设置)获取字符串并将其保存到您想要的文件

答案 1 :(得分:1)

有许多解决方案可以保存设置,包括xml序列化您的类,使用ini文件,使用注册表,使用json文件,使用appsettings,....

Windows窗体应用程序的一个好方法是使用Application Settings

这样,您可以使用设计器或使用代码创建设置类,然后在运行时,加载设置,更改值以及保存或重置设置。

使用设计器创建设置:

  1. 在解决方案资源管理器中,展开项目的“属性”节点,然后打开Settings.settings或根据需要添加新的设置文件。
  2. 在您需要的每个设置的设计器中,您可以设置Name设置,Value作为默认值,Type作为设置,然后选择{{1作为范围。这样您就可以在运行时更改设置。

  3. 您可以通过这种方式阅读,更改或保存设置:

  4. User

    以编程方式创建设置:

    1. 向项目添加一个类并将其命名为//Read and show a value MessageBox.Show(Properties.Settings.Default.Key1); //Changes the value Properties.Settings.Default.Key1 = "New Value"; //Save settings (You can do it in a setting form or in close event of your main form) Properties.Settings.Default.Save(); 并从System.Configuration.ApplicationSettingsBase继承

    2. 为您需要的每个应用程序设置添加属性。将UserScopedSettingAttribute添加到酒店。您还可以使用DefaultSettingValue属性

    3. 为该属性提供默认值
      MySettings

      然后在使用时,您可以

      public class MySettings : System.Configuration.ApplicationSettingsBase
      {
          [UserScopedSetting()]
          [DefaultSettingValue("Value1")]
          public string Key1
          {
              get
              {
                  return ((string)this["Key1"]);
              }
              set
              {
                  this["Key1"] = value;
              }
          }
      }
      

      要了解有关设置的更多信息: