Приложения UWP не имеют прямого доступа к какой-либо файловой системе, кроме:
- Неисключительный доступ только для чтения к папке установки пакета
- Доступ для чтения / записи в папку данных приложения (в роуминге или локально)
- Чтение / запись в личную временную папку.
Весь другой доступ осуществляется через Windows «посредники» времени выполнения.
Одним из решений является использование Windows API времени выполнения для копирования всего файла во временную папку, а затем использование std::filesystem
для временной копии.
Вот пример использования папки с изображениями:
#include "winrt/Windows.Storage.h"
#include "winrt/Windows.Storage.Pickers.h"
using namespace winrt::Windows::Storage;
using namespace winrt::Windows::Storage::Pickers;
FileOpenPicker openPicker;
openPicker.ViewMode(PickerViewMode::Thumbnail);
openPicker.SuggestedStartLocation(PickerLocationId::PicturesLibrary);
openPicker.FileTypeFilter().Append(L".jpg");
openPicker.FileTypeFilter().Append(L".png");
auto file = co_await openPicker.PickSingleFileAsync();
if (file)
{
auto tempFolder = ApplicationData::Current().TemporaryFolder();
auto tempFile = co_await file.CopyAsync(tempFolder, file.Name(), NameCollisionOption::GenerateUniqueName);
if (tempFile)
{
std::filesystem::path file = LR"(tempFile.Path().c_str())";
...
DeleteFile(tempFile.Path().c_str());
}
}
См. Документы Microsoft