如何向文本文件写入键和值并将其读回
本文关键字:键和值 文本 文件 | 更新日期: 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窗体应用程序的一个好方法是使用"应用程序设置"。
通过这种方式,您可以使用设计器或代码创建设置类,然后在运行时加载设置、更改值以及保存或重置设置。
使用设计器创建设置:
- 在解决方案资源管理器中,展开项目的"属性"节点并打开
Settings.settings
,或者根据需要添加新的设置文件 -
在设计器中,对于您需要的每个设置,您可以设置设置的
Name
,Value
作为默认值,Type
作为设置,并选择User
作为范围。通过这种方式,您可以在运行时更改设置。 -
您可以通过以下方式读取值、更改值或保存设置:
//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();
以编程方式创建设置:
向项目中添加一个类,并将其命名为
MySettings
并从System.Configuration.ApplicationSettingsBase
继承为所需的每个应用程序设置添加属性。将
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();
}
要了解有关设置的更多信息:
- 应用程序设置概述
- 使用应用程序设置和用户设置