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