无法读取JSON文件 - FileNotFoundException

时间:2014-09-29 18:06:14

标签: c# json windows-phone-8 windows-phone-8.1 filenotfoundexception

我正在关注此页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";
}

1 个答案:

答案 0 :(得分:0)

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

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

如果您想确保保存数据,请不要关闭模拟器,只使用VS内的Build(VS会不时决定重建您的应用)。

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