保存到文件损坏 - 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。