我想要做的是将一些值写入文本文档。值是来自numericUpDown对象的值。
实施例: 其中一个NumericUpDown是一个分数。我想做的是在一行文本后更改文本文档中的文本。文本描述了线条背后的值。在文本文件中是一行“Score:score_value”,score_value应该是Score NummericUpDown的值。
我认为我应该以与Winform相同的顺序在txt中创建行,但我不确定什么是最好的。它现在唯一能做的就是编写和替换第一行:
private void Option_Save_Click(object sender, EventArgs e)
{
string Game_option_values = Score.Value.ToString();
System.IO.StreamWriter Game_options = new System.IO.StreamWriter(@"link to file");
Game_options.WriteLine(Game_option_values);
Game_options.Close();
Option_Save.Enabled = false;
}
这样做的最佳方式是什么?
答案 0 :(得分:0)
在单独的行中将7个不同的字符串值写入文本文档
string[] multiple_values = new string[7];
// ...
// code to store values in multiple_values
// ...
File.WriteAllLines(@"link to file", multiple_values);
从文本文档中读取以前保存的字符串值
string[] multiple_values = null;
multiple_values = File.ReadAllLines(@"link to file");
答案 1 :(得分:0)
我询问您的用例的原因是,阅读纯文本文件并不是加载和保存设置的最简单方法。它在概念上很简单,但是当你已经有很好的轮子时,你花了太多时间重新发明轮子。
您有更简单的选择,包括验证数据和处理更复杂数据结构的方法。我从这两种方法中的一种开始:
答案 2 :(得分:0)
如果文件很小,您可以将整个文本复制到内存中并将其写回文件
string Game_option_values = Score.Value.ToString();
string text = File.ReadAllText(path); // Read all text to memory
text = text.Replace("score_value", Game_option_values); // replace the string with value from Form
File.WriteAllText(path, text); // Write it back to file
如果文件很大,我建议创建一个副本作为源,并将其重写回原始文件。 (因为单独覆盖原始文件可能会破坏所有内容)
string Game_option_values = Score.Value.ToString();
string newpath = path + ".bak";
File.Copy(path, newpath); // copy to new file
using (StreamReader sr = new StreamReader(newpath)) // open the new file
using (StreamWriter sw = new StreamWriter(path, false)) // overwrite the original file
{
while(!sr.EndOfStream)
{
string line = sr.ReadLine(); // read per line, so it does not consume memory too much
line = line.Replace("score_value", Game_option_values); // replace the string with the value from Form
sw.WriteLine(line); // write per line
}
}
// Then you can delete the new file