无法理解C#windows phone 8.1(SL)文件存储

时间:2015-02-01 13:37:22

标签: c# file-io windows-phone-8.1

我正在为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完全相同),它是另一个写入的文件。 这怎么可能 ?在我看来,我在某处遗漏了一些东西,但我找不到......

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您将uri指向安装目录,该目录是只读的。 (你的第一次写作可能会在真实设备上失败。

使用 ms-appdata:// 代替,这是应用本地目录。