保存到文件损坏 - C#
Save to file broken - C#
我尝试使用 txt 文件作为备份:当复选框被激活时,我们在“胜利”txt 文件中添加 1,当它被停用时,我们在“松散”txt 文件中添加 1,这里是我的问题:
例如,如果复选框被禁用,我 运行 脚本,我在“松散”中得到 1,在“胜利”中得到 0,这很正常;但是如果我再次 运行 它(不改变任何东西),我在“松散”中得到 51,在“胜利”中得到 49,但我想得到 2 和 0..
不知道有没有讲清楚;
这是一段代码:
if (Directory.Exists("C:/PekmiIndustries/BrokenGame"))
{
TextReader VtxtR = new StreamReader("C:/PekmiIndustries/BrokenGame/Victory.txt");
TempVReadStr = VtxtR.Read().ToString();
VRead = Convert.ToInt32(TempVReadStr);
VRead += 1;
if (VictoireCheck.Checked == true)
{
VRead += 1;
}
VtxtR.Close();
TextWriter VtxtW = new StreamWriter("C:/PekmiIndustries/BrokenGame/Victory.txt");
VtxtW.Write(VRead.ToString());
VtxtW.Close();
TextReader LtxtR = new StreamReader("C:/PekmiIndustries/BrokenGame/Loose.txt");
TempLReadStr = LtxtR.Read().ToString();
LRead = Convert.ToInt32(TempLReadStr);
LRead += 1;
if (VictoireCheck.Checked == false)
{
LRead += 1;
}
LtxtR.Close();
TextWriter LtxtW = new StreamWriter("C:/PekmiIndustries/BrokenGame/Loose.txt");
LtxtW.Write(LRead.ToString());
LtxtW.Close();
MessageBox.Show("Les stats ont correctement étés sauvegardées !", "BrokenGame");
}
else
{
MessageBox.Show("Err Sauvegarde - Dossier; \nRéessaie de sauvegarder les stats, ou de redémarrer BrokenGame", "BrokenGame");
}
Read
读取单个字符,而不是字符串。 ASCII1
的数字表示是49
。添加 2
(无论复选框的状态如何,添加 1
后每次读取都会执行此操作)会使 51
写回一个文件。
0
由数字 48
表示,您将其加 1 然后写回 - 因此 49
.
你应该看看 StreamReader.ReadLine
因为只读第一个字符意味着当你 运行 程序 10 次时,无论是胜利还是失败,它都会溢出回又是 1,不是 10。
我尝试使用 txt 文件作为备份:当复选框被激活时,我们在“胜利”txt 文件中添加 1,当它被停用时,我们在“松散”txt 文件中添加 1,这里是我的问题: 例如,如果复选框被禁用,我 运行 脚本,我在“松散”中得到 1,在“胜利”中得到 0,这很正常;但是如果我再次 运行 它(不改变任何东西),我在“松散”中得到 51,在“胜利”中得到 49,但我想得到 2 和 0.. 不知道有没有讲清楚;
这是一段代码:
if (Directory.Exists("C:/PekmiIndustries/BrokenGame"))
{
TextReader VtxtR = new StreamReader("C:/PekmiIndustries/BrokenGame/Victory.txt");
TempVReadStr = VtxtR.Read().ToString();
VRead = Convert.ToInt32(TempVReadStr);
VRead += 1;
if (VictoireCheck.Checked == true)
{
VRead += 1;
}
VtxtR.Close();
TextWriter VtxtW = new StreamWriter("C:/PekmiIndustries/BrokenGame/Victory.txt");
VtxtW.Write(VRead.ToString());
VtxtW.Close();
TextReader LtxtR = new StreamReader("C:/PekmiIndustries/BrokenGame/Loose.txt");
TempLReadStr = LtxtR.Read().ToString();
LRead = Convert.ToInt32(TempLReadStr);
LRead += 1;
if (VictoireCheck.Checked == false)
{
LRead += 1;
}
LtxtR.Close();
TextWriter LtxtW = new StreamWriter("C:/PekmiIndustries/BrokenGame/Loose.txt");
LtxtW.Write(LRead.ToString());
LtxtW.Close();
MessageBox.Show("Les stats ont correctement étés sauvegardées !", "BrokenGame");
}
else
{
MessageBox.Show("Err Sauvegarde - Dossier; \nRéessaie de sauvegarder les stats, ou de redémarrer BrokenGame", "BrokenGame");
}
Read
读取单个字符,而不是字符串。 ASCII1
的数字表示是49
。添加 2
(无论复选框的状态如何,添加 1
后每次读取都会执行此操作)会使 51
写回一个文件。
0
由数字 48
表示,您将其加 1 然后写回 - 因此 49
.
你应该看看 StreamReader.ReadLine
因为只读第一个字符意味着当你 运行 程序 10 次时,无论是胜利还是失败,它都会溢出回又是 1,不是 10。