我正在为WP8.1编写一个简单的quizz游戏,在某些时候我决定添加一个高分能力。 我选择了一个我知道不是最好的选项,但无论如何都应该工作:在我的应用程序中包含一个默认值为0的highscore.txt文件,并将此文件放在“Resources”文件夹中。当实际分数高于我要覆盖的高分时。
以下是我的进展情况: 第一种:获取高分并将其存储在变量中的方法(第一种方法非常好,它会读取文件并获得高分)
public async void getHighScore(){
Uri highScoreFileLoc = new Uri("ms-appx:///Resources/Highscore.txt");
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(highScoreFileLoc);
string highScoreSTR = await FileIO.ReadTextAsync(file);
}
将高分记录写入文件的方法。我的想法是,如果我使用相同的文件路径和名称,我应该覆盖刚刚打开的文件。
private async void ecritHighScore(int highScore)
{
byte[] line = System.Text.Encoding.UTF8.GetBytes(scoreJoueur.ToString());
Uri HighScoreFileLoc = new Uri("ms-appx:///Resources/Highscore.txt");
StorageFile file2 = await StorageFile.GetFileFromApplicationUriAsync(HighScoreFileLoc);
string highScoreSTR = highScore.ToString();
await FileIO.WriteBytesAsync(file2, line);
}
当我运行应用程序时,第二次写入并正确读取高分。 但是如果我退出模拟器并再次运行它,则高分会回到默认值:原始的Highscore.txt文件没有被覆盖......
总结一下情况: 我打开一个文件并正确读取但是当我写入同一个文件时(Uri完全相同),它是另一个写入的文件。 这怎么可能 ?在我看来,我在某处遗漏了一些东西,但我找不到......
非常感谢任何帮助。
答案 0 :(得分:0)
您将uri指向安装目录,该目录是只读的。 (你的第一次写作可能会在真实设备上失败。
使用 ms-appdata:// 代替,这是应用本地目录。