Pek*_*kmi -2 c# streamwriter streamreader
我尝试使用txt文件作为备份:当激活复选框时,我们在“胜利”txt文件中添加1,当它被停用时,我们在“松散”txt文件中添加1,这是我的问题:\例如,如果禁用该复选框,我运行脚本,在“宽松”中得到 1,在“胜利”中得到 0,所以很正常;但如果我再次运行它(不改变任何东西),我在“宽松”中得到 51,在“胜利”中得到 49,但我想得到 2 和 0..\n我不知道它是否真的很清楚;
\n这是一段代码:
\nif (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}\nRun Code Online (Sandbox Code Playgroud)\n
Read读取单个字符,而不是字符串。ASCII 的数字表示形式1是49。添加到这一点(无论复选框的状态如何,2您在每次读取时都会执行此操作)使得写回一个文件。151
0由数字表示48,您将其加 1,然后写回 - 因此49。
您应该考虑一下,StreamReader.ReadLine因为仅读取第一个字符意味着当您运行该程序 10 次时,无论是胜利还是失败,它都会再次溢出到 1,而不是 10。