我使用本地文件夹保存对象列表。为此,我还使用了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;
}