UWP:使用 StorageApplicationPermissions.FutureAccessList 在通用位置写入文件

UWP: Write file in a generic location using StorageApplicationPermissions.FutureAccessList

我的 UWP 应用程序中有以下场景:

  1. 用户将文件(例如使用 FilePicker 或通过将文件拖到应用程序等)导入我的应用程序。

  2. 我们将此文件的一些元数据保存在我们的内部数据库中,我们还保存使用以下代码检索的令牌:

    string token = StorageApplicationPermissions.FutureAccessList.Add(file);
    
  3. 用户关闭应用。

  4. 用户重新打开应用。

  5. 现在我们要覆盖初始文件。为此,我们使用以下代码检索 StorageFile:

    StorageFile exportTarget = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(token);
    

但是当我尝试写入文件时,例如使用

using (IRandomAccessStream fs = await exportTarget.OpenAsync(FileAccessMode.ReadWrite))

我得到一个异常,抱怨 exportTargetReadOnly

如何在写入模式下访问此类文件?

原来这不是StorageApplicationPermissions.FutureAccessList的严格问题。

实际上只有当用户通过将文件拖放到应用程序中导入文件时才会出现问题:在这种情况下,DataPackageView.GetStorageItemsAsync() 方法 returns StorageFile 是只读的。

因此,覆盖这些文件的唯一方法是使用 PathIO 方法,如 post 中所述:https://github.com/microsoft/microsoft-ui-xaml/issues/2421