为什么知名文件夹在winrt中无效?我错过了什么吗?

时间:2017-11-16 14:02:23

标签: c# uwp windows-runtime

我正在处理一个涉及后台任务的UWP项目。后台任务需要检查文档库中的特定文件。

此代码完美无缺。

  try
    {
        StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
        SendToast(file.Path + file.Name + " - File Present");
    }
catch 
    {
        SendToast("Not Found");
    }

这个没有

  try
    {
        StorageFile file = await KnownFolders.DocumentsLibrary.GetFileAsync(fileName);
        SendToast(file.Path + file.Name + " - File Present");
    }
catch
    {
        SendToast("Not Found");
    }

我还在Package.appxmanifest

中添加了文档库功能
  <Capabilities>
    <Capability Name="internetClient" />
    <uap:Capability Name="documentsLibrary" />
  </Capabilities>

和这个

<uap:Extension Category="windows.fileTypeAssociation">
  <uap:FileTypeAssociation Name=".txt">
    <uap:DisplayName>Text</uap:DisplayName>
    <uap:SupportedFileTypes>
      <uap:FileType>.log</uap:FileType>
    </uap:SupportedFileTypes>
  </uap:FileTypeAssociation>
</uap:Extension>

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

UWP应用程序运行沙盒并且对文件系统的访问权限非常有限,StorageItems(即StorageFolderStorageFile)是Windows应用商店应用的规范存储标识符,而不是路径。

存储在我们的本地文件夹(ApplicationData.Current.LocalFolder)中的数据,我们可以使用该路径,但如果您使用DocumentsLibraryMusicLibrary,我们就无法使用该路径访问该文件,它指的是非文件系统位置,而DocumentsLibrary功能不授予应用程序直接文件系统访问权限。请参阅File access permissions和Rob的blog以了解有关文件访问和在Windows应用商店应用中使用路径的更多信息。