UWP:使用 StorageApplicationPermissions.FutureAccessList 在通用位置写入文件
UWP: Write file in a generic location using StorageApplicationPermissions.FutureAccessList
我的 UWP 应用程序中有以下场景:
用户将文件(例如使用 FilePicker
或通过将文件拖到应用程序等)导入我的应用程序。
我们将此文件的一些元数据保存在我们的内部数据库中,我们还保存使用以下代码检索的令牌:
string token = StorageApplicationPermissions.FutureAccessList.Add(file);
用户关闭应用。
用户重新打开应用。
现在我们要覆盖初始文件。为此,我们使用以下代码检索 StorageFile:
StorageFile exportTarget = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(token);
但是当我尝试写入文件时,例如使用
using (IRandomAccessStream fs = await exportTarget.OpenAsync(FileAccessMode.ReadWrite))
我得到一个异常,抱怨 exportTarget
是 ReadOnly。
如何在写入模式下访问此类文件?
原来这不是StorageApplicationPermissions.FutureAccessList
的严格问题。
实际上只有当用户通过将文件拖放到应用程序中导入文件时才会出现问题:在这种情况下,DataPackageView.GetStorageItemsAsync()
方法 returns StorageFile
是只读的。
因此,覆盖这些文件的唯一方法是使用 PathIO
方法,如 post 中所述:https://github.com/microsoft/microsoft-ui-xaml/issues/2421
我的 UWP 应用程序中有以下场景:
用户将文件(例如使用
FilePicker
或通过将文件拖到应用程序等)导入我的应用程序。我们将此文件的一些元数据保存在我们的内部数据库中,我们还保存使用以下代码检索的令牌:
string token = StorageApplicationPermissions.FutureAccessList.Add(file);
用户关闭应用。
用户重新打开应用。
现在我们要覆盖初始文件。为此,我们使用以下代码检索 StorageFile:
StorageFile exportTarget = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(token);
但是当我尝试写入文件时,例如使用
using (IRandomAccessStream fs = await exportTarget.OpenAsync(FileAccessMode.ReadWrite))
我得到一个异常,抱怨 exportTarget
是 ReadOnly。
如何在写入模式下访问此类文件?
原来这不是StorageApplicationPermissions.FutureAccessList
的严格问题。
实际上只有当用户通过将文件拖放到应用程序中导入文件时才会出现问题:在这种情况下,DataPackageView.GetStorageItemsAsync()
方法 returns StorageFile
是只读的。
因此,覆盖这些文件的唯一方法是使用 PathIO
方法,如 post 中所述:https://github.com/microsoft/microsoft-ui-xaml/issues/2421