我正在关注此页http://channel9.msdn.com/Series/Windows-Phone-8-1-Development-for-Absolute-Beginners/Part-22-Storing-and-Retrieving-Serialized-Data上的教程,因为我希望我的应用程序将数据存储在JSON文件中,然后将其读回。关于本教程的两件事:
我按下写入按钮 - 工作正常,然后按下阅读按钮它也可以工作,但是,我关闭win phone 8.1模拟器,再次打开它,按下阅读按钮我得到了An exception of type 'System.IO.FileNotFoundException'exception!
为什么,我应该从以前运行应用程序的磁盘上已经有文件?或者当我关闭模拟器时它会被删除吗?另外我在磁盘上查找指定的文件但找不到它!有什么帮助吗?
private const string JSONFILENAME = "data.json";
private async Task readJsonAsync()
{
string content = String.Empty;
var myStream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(JSONFILENAME);
using (StreamReader reader = new StreamReader(myStream))
{
content = await reader.ReadToEndAsync();
}
resultTextBlock.Text = content;
}
private async Task writeJsonAsync()
{ // Notice that the write is ALMOST identical ... except for the serializer.
var myCars = buildObjectGraph();
var serializer = new DataContractJsonSerializer(typeof(List<Car>));
using (var stream = await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync(
JSONFILENAME,
CreationCollisionOption.ReplaceExisting))
{
serializer.WriteObject(stream, myCars);
}
resultTextBlock.Text = "Write succeeded";
}
答案 0 :(得分:0)
当您关闭模拟器时,其状态不会被保留,这意味着当您重新启动模拟器时,您测试的应用程序不存在。因此,当您再次打开模拟器时,VS将进行新安装。
当您重建项目时也会发生同样的情况。然后,VS将从模拟器中删除该应用程序并从头开始重新安装。这反过来也会导致丢失您的JSON文件。
如果您想确保保存数据,请不要关闭模拟器,只使用VS内的Build(VS会不时决定重建您的应用)。
为了更准确地测试您的应用,我建议您查看Windows Phone电源工具(http://wptools.codeplex.com/)。在那里,您可以明确选择安装或更新给定的XAP包。