0

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

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 中创建的新文件夹“Test”。但是会引发以下异常:

System.AggregateException:发生一个或多个错误。---> System.Runtime.InteropServices.COMException:未指定的错误无法在此 StorageFolder 中创建项目。如果文件夹是通过使用分组选项创建查询获得的,则可能会遇到这种情况。
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)

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

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

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

-西蒙

4

1 回答 1

0

据我所知,Windows API 不允许您通过“完整路径”来创建文件夹,例如. “create\all\these\subfolders\for\me”(“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" );
于 2015-02-24T13:58:40.237 回答