保存到文件损坏 - C#

Pek*_*kmi -2 c# streamwriter streamreader

我尝试使用txt文件作为备份:当激活复选框时,我们在“胜利”txt文件中添加1,当它被停用时,我们在“松散”txt文件中添加1,这是我的问题:\例如,如果禁用该复选框,我运行脚本,在“宽松”中得到 1,在“胜利”中得到 0,所以很正常;但如果我再次运行它(不改变任何东西),我在“宽松”中得到 51,在“胜利”中得到 49,但我想得到 2 和 0..\n我不知道它是否真的很清楚;

\n

这是一段代码:

\n
if (Directory.Exists("C:/PekmiIndustries/BrokenGame"))\n{\n    TextReader VtxtR = new StreamReader("C:/PekmiIndustries/BrokenGame/Victory.txt");\n    TempVReadStr = VtxtR.Read().ToString();\n    VRead = Convert.ToInt32(TempVReadStr);\n    VRead += 1;\n    if (VictoireCheck.Checked == true)\n    {\n        VRead += 1;\n    }\n    VtxtR.Close();\n    TextWriter VtxtW = new StreamWriter("C:/PekmiIndustries/BrokenGame/Victory.txt");\n    VtxtW.Write(VRead.ToString());\n    VtxtW.Close();\n\n    TextReader LtxtR = new StreamReader("C:/PekmiIndustries/BrokenGame/Loose.txt");\n    TempLReadStr = LtxtR.Read().ToString();\n    LRead = Convert.ToInt32(TempLReadStr);\n    LRead += 1;\n    if (VictoireCheck.Checked == false)\n    {\n        LRead += 1;\n    }\n    LtxtR.Close();\n    TextWriter LtxtW = new StreamWriter("C:/PekmiIndustries/BrokenGame/Loose.txt");\n    LtxtW.Write(LRead.ToString());\n    LtxtW.Close();\n\n    MessageBox.Show("Les stats ont correctement \xc3\xa9t\xc3\xa9s sauvegard\xc3\xa9es !", "BrokenGame");\n}\nelse\n{\n    MessageBox.Show("Err Sauvegarde - Dossier; \\nR\xc3\xa9essaie de sauvegarder les stats, ou de red\xc3\xa9marrer BrokenGame", "BrokenGame");\n}\n
Run Code Online (Sandbox Code Playgroud)\n

fre*_*rik 5

Read读取单个字符,而不是字符串。ASCII 的数字表示形式149。添加到这一点(无论复选框的状态如何,2您在每次读取时都会执行此操作)使得写回一个文件。151

0由数字表示48,您将其加 1,然后写回 - 因此49

您应该考虑一下,StreamReader.ReadLine因为仅读取第一个字符意味着当您运行该程序 10 次时,无论是胜利还是失败,它都会再次溢出到 1,而不是 10。