无法读取JSON文件-FileNotFoundException

本文关键字:文件 -FileNotFoundException JSON 读取 | 更新日期: 2023-09-27 18:25:02

我在这个页面上学习教程http://channel9.msdn.com/Series/Windows-Phone-8-1-Development-for-Absolute-Beginners/Part-22-Storing-and-Retrieving-Serialized-Data因为我希望我的应用程序将数据存储在JSON文件中,然后将其读回。关于教程的2件事:

我按下写按钮-工作正常,然后按下读按钮,它也工作,然而,我关闭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";
}

无法读取JSON文件-FileNotFoundException

关闭Emulator时,其状态不会保留,这意味着重新启动Emulator时测试的应用程序不存在。因此,当您再次打开模拟器时,VS将进行新的安装。

重建项目时也会发生同样的情况。然后,VS将从模拟器中删除该应用程序,并从头开始重新安装。这反过来也会导致丢失JSON文件。

当你想确保你的数据被保留时,不要关闭模拟器,只需在VS中使用Build(VS会不时决定重建你的应用程序)。

为了更正确地测试你的应用程序,我建议你看看Windows Phone电源工具(http://wptools.codeplex.com/)。在那里,您可以显式地选择安装或更新给定的XAP包。