使用Windows Rt和C#的FileIO

时间:2013-01-21 19:04:00

标签: c# windows-runtime windows-rt

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

       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,我会得到一个例外。

非常混乱....

1 个答案:

答案 0 :(得分:1)

您应该使用您安装的位置来编写任何文件。根据{{​​3}}:

,它应该是只读
  

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

您应该使用LocalRoamingTemporary存储位置。

请参阅此链接:MSDN: File Access/Permissions in Windows Store Apps