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

本文关键字:键和值 文本 文件 | 更新日期: 2023-09-27 18:26:00

在一个新的表格中,我做了

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();
        }

然后在表格1:中

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

但问题是,在某些情况下,apiKey、userid和jsonfiledirectory的顺序可能与现在的[0][1][2]不同因此,我只想在写行中添加一个键和一个值,例如文本文件如下:

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

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

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

使用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(设置)获取字符串并将其保存到您想要的文件

有很多保存设置的解决方案,包括xml序列化类、使用ini文件、使用registry、使用json文件、使用appsettings等。

windows窗体应用程序的一个好方法是使用"应用程序设置"。

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

使用设计器创建设置:

  1. 在解决方案资源管理器中,展开项目的"属性"节点并打开Settings.settings,或者根据需要添加新的设置文件
  2. 在设计器中,对于您需要的每个设置,您可以设置设置的NameValue作为默认值,Type作为设置,并选择User作为范围。通过这种方式,您可以在运行时更改设置。

  3. 您可以通过以下方式读取值、更改值或保存设置:

//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();

以编程方式创建设置:

  1. 向项目中添加一个类,并将其命名为MySettings并从System.Configuration.ApplicationSettingsBase 继承

  2. 为所需的每个应用程序设置添加属性。将UserScopedSettingAttribute添加到属性中。您也可以使用DefaultSettingValue属性为该属性提供默认值:

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

然后在使用时,您可以

MySettings settnigs;
private void Form1_Load(object sender, EventArgs e)
{
    settnigs= new MySettings ();
    //Read and show a value
    MessageBox.Show(settnigs.Key1);
    //Changes the value
    settnigs.Key1 = "New Value";
}
void Form1_FormClosing(object sender, FormClosingEventArgs 
{
    settnigs.Save();
}

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

  • 应用程序设置概述
  • 使用应用程序设置和用户设置