0

哇,这种方式是否比它需要的更复杂。有人可以向我解释为什么以下代码有效:

       string stringToWrite = "SomeStuff";
        Windows.ApplicationModel.Package package = Windows.ApplicationModel.Package.Current;
        Windows.Storage.StorageFolder installedLocation = package.InstalledLocation;
        var files = await installedLocation.GetFilesAsync();
        foreach (Windows.Storage.StorageFile sf in files)
        {
            if (sf.Name.Equals("log.txt"))
            {
                await FileIO.AppendTextAsync(sf, stringToWrite);

            }
        }

然而,以下因 AccessDenied 而失败:

      Windows.ApplicationModel.Package package = Windows.ApplicationModel.Package.Current;
      Windows.Storage.StorageFolder installedLocation = package.InstalledLocation;
      var log = await installedLocation.GetFileAsync("log.txt");
      await FileIO.AppendTextAsync(log, stringToWrite);

唯一的区别是循环通过 GetFilesAsync 方法返回的文件与按名称获取文件。顺便说一句,按名称获取文件是有效的,因为如果我在 GetFileAsync 中拼错 log.txt,我会得到一个异常。

很混乱....

4

1 回答 1

1

应该使用您安装的位置来写入任何文件。根据MSDN ,它应该是只读的:Windows Store Apps 中的文件访问/权限

应用程序的安装目录是只读位置。您无法通过文件选择器访问安装目录。

您应该使用LocalRoamingTemporary存储位置。

请参阅此链接:MSDN:快速入门本地应用程序数据

于 2013-01-21T19:15:35.290 回答