UWP: запись файла в общую папку c с помощью StorageApplicationPermissions.FutureAccessList - PullRequest
0 голосов
/ 08 июля 2020

У меня в приложении UWP есть следующий сценарий:

  1. Пользователь импортирует файл (например, используя FilePicker или перетаскивая файл в приложение и т. Д. c.) в мое приложение.

  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))

, я получаю исключение: exportTarget - это Только для чтения .

Как я могу получить доступ к такому файлу в режиме Запись ?

1 Ответ

0 голосов
/ 10 июля 2020

Оказалось, что это не серьезная проблема StorageApplicationPermissions.FutureAccessList.

Проблема возникает на самом деле только в том случае, если пользователь импортирует файл, перетаскивая его в приложение: в этом В этом случае метод DataPackageView.GetStorageItemsAsync() возвращает список из StorageFile, которые являются ReadOnly.

Итак, единственный способ перезаписать эти файлы - использовать методы PathIO, как описано в этом сообщении: https://github.com/microsoft/microsoft-ui-xaml/issues/2421

...