【发布时间】:2016-02-02 21:48:13
【问题描述】:
我正在尝试以这种方式将一些信息保存到 ApplicationData.Current.LocalFolder 中的文件中:
private async Task WriteRecentScores(List<ScoreRecord> list)
{
try
{
var serializer = new DataContractJsonSerializer(typeof(List<ScoreRecord>));
using (var stream = await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync(
RECENTSCOREFILE,
CreationCollisionOption.ReplaceExisting))
{
serializer.WriteObject(stream, list);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
Debug.WriteLine(ex.StackTrace);
}
}
但我在到达 OpenStreamForWriteAsync 时遇到未经授权的访问异常。
RECENTSCOREFILE="score.json" 是第一次启动应用程序时创建的文件(我使用的是 FailIfExists 选项),这是代码
private async void CreateFile()
{
try
{
StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFile file = await folder.CreateFileAsync(RECENTSCOREFILE, CreationCollisionOption.FailIfExists);
}
catch (Exception) { }
return;
}
有趣的是,我尝试在模拟器和手机中启动该应用程序,似乎只有在手机上运行时才会引发异常。
编辑:我发现它仅在我第一次与文件交互时才有效(似乎不需要创建文件),但我该如何解决这个问题?
【问题讨论】:
-
您在其他地方使用该文件吗? - 例如阅读乐谱?可能之前的流还没有被释放。
-
是的,我正在从我的应用程序的另一个页面读取同一个文件,但我不知道为什么它只能在模拟器中工作
-
你找到解决办法了吗?
标签: windows-phone-8.1 jsonserializer unauthorizedaccessexcepti