WinRT 可移动设备:音乐文件夹:无法在此存储文件夹中创建项目



我正在尝试使用 WinRT 将我的音乐收藏从 NAS 系统同步到我的 Windows Phone 设备。要在手机上的音乐文件夹中创建一个文件夹,我使用以下代码片段:

StorageFolder DeviceFolder = ( await KnownFolders.RemovableDevices.GetFoldersAsync() ).FirstOrDefault( a => a.Name == "zeroskyx-lumia" );
StorageFolder PhoneMusicFolder = await DeviceFolder.GetFolderAsync( @"PhoneMusic" );
await DeviceFolder.CreateFolderAsync( @"PhoneMusicTest" );

我希望在电话\音乐中创建新文件夹"测试"。但是,将引发以下异常:

System.AggregateException:发生一个或多个错误。 ---> System.Runtime.InteropServices.COMException:未指定的错误无法 在此存储文件夹中创建项目。如果出现以下情况,则可能会遇到此问题 该文件夹是通过使用分组选项创建查询来获取的。
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task 任务(在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task 任务(

当我手动在 Phone\Music 中创建文件夹,然后使用该代码片段在该文件夹中创建子目录时,操作成功(因此没有缺少 WinRT 代理清单问题(。

有没有人也遇到过同样的问题?我在这里做错了什么?

提前致以最诚挚的问候和感谢

-西蒙

据我所知,Windows API 不允许您发布通过"完整路径"的文件夹创建,例如。"create\all\these\subfolder\for\me"(相当于"mkdir -p"Linux(。

要使代码片段正常工作,您需要首先获取表示"电话/音乐"子文件夹的 StorageFolder,并从那里发出文件夹创建,例如:

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

最新更新