WinRT RemovableDevices: папка "Музыка": невозможно создать элементы в этом StorageFolder

Я пытаюсь использовать WinRT для синхронизации моей музыкальной коллекции из системы NAS с моим устройством Windows Phone. Для создания папки в папке "Музыка" на телефоне я использую следующий фрагмент:

StorageFolder DeviceFolder = ( await KnownFolders.RemovableDevices.GetFoldersAsync() ).FirstOrDefault( a => a.Name == "zeroskyx-lumia" );
StorageFolder PhoneMusicFolder = await DeviceFolder.GetFolderAsync( @"Phone\Music" );
await DeviceFolder.CreateFolderAsync( @"Phone\Music\Test" );

Я ожидаю получить новую папку "Тест", созданную в Phone\Music. Однако выдается следующее исключение:

System.AggregateException: произошла одна или несколько ошибок. ---> System.Runtime.InteropServices.COMException: неопределенная ошибка. Невозможно создать элементы в этом StorageFolder. Это может произойти, если папка была получена путем создания запроса с использованием параметров группировки.
в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Задача)

Когда я вручную создаю папку в Phone \ Music, а затем использую фрагмент для создания подкаталога в этой папке, операция завершается успешно (так что проблема с манифестом посредника WinRT отсутствует).

Кто-нибудь сталкивался с такой же проблемой? Что я здесь не так делаю?

С наилучшими пожеланиями и заранее спасибо

-Simon

1 ответ

Насколько я знаю, Windows API не позволяет создавать папки с указанием полного пути, например. "создать \ все \ эти \ подпапки \ для \ меня" (эквивалент "mkdir -p" linux).

Чтобы ваш фрагмент кода работал, вам нужно сначала получить StorageFolder, который представляет подпапку "Телефон / Музыка", и выполнить оттуда создание папки, например:

StorageFolder DeviceFolder = ( await KnownFolders.RemovableDevices.GetFoldersAsync() ).FirstOrDefault( a => a.Name == "zeroskyx-lumia" );
StorageFolder PhoneMusicFolder = await DeviceFolder.GetFolderAsync( @"Phone\Music" );
await PhoneMusicFolder.CreateFolderAsync( "Test" );
Другие вопросы по тегам