Windows Phone 8.1 C#中的本地文件夹

时间:2016-01-30 14:53:17

标签: c# json windows-phone-8.1

我使用本地文件夹保存对象列表。为此,我还使用了json序列化程序,因为我想将这些信息存储在json文件中。 这是我的代码:

private async void SaveScore(int intscore)
    {
        List<ScoreRecord> recents = await ReadRecentScores();
        if (recents != null)
        {
            if (recents.Count > 10)
            {
                recents.RemoveAt(0);
            }
            recents.Add(new ScoreRecord("defaultName", intscore));
        }
        await WriteRecentScores(recents);
    }

    private async Task WriteRecentScores(List<ScoreRecord> list)
    {
        var serializer = new DataContractJsonSerializer(typeof(List<ScoreRecord>));
        using (var stream = await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync(
                      RECENTSCOREFILE,
                      CreationCollisionOption.ReplaceExisting))
        {
            serializer.WriteObject(stream, list);
        }
    }

    private async Task<List<ScoreRecord>> ReadRecentScores()
    {
        List<ScoreRecord> result = null;
        try
        {
            var jsonSerializer = new DataContractJsonSerializer(typeof(List<ScoreRecord>));

            var myStream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(RECENTSCOREFILE);

            result = (List<ScoreRecord>)jsonSerializer.ReadObject(myStream);
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
        return result;
    }

其中RECENTSCOREFILE是文件的名称。 我不确定它是否有效,但我知道当我尝试从我的应用程序的另一个页面检索此文件时,我得到一个文件未找到异常。这就是我想要做的事情:

protected async override void OnNavigatedTo(NavigationEventArgs e)
    {
        recentListBox.ItemsSource = await ReadRecentScores();
    }

    private async Task<List<ScoreRecord>> ReadRecentScores()
    {
        List<ScoreRecord> result;
        var jsonSerializer = new DataContractJsonSerializer(typeof(List<ScoreRecord>));

        var myStream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(RECENTSCOREFILE);

        result = (List<ScoreRecord>)jsonSerializer.ReadObject(myStream);
        return result;
    }

0 个答案:

没有答案