在我的Windows应用商店应用中,我一直使用:
StorageFolder folder = await KnownFolders.DocumentsLibrary.GetFolderAsync("Folder Name");
if(folder != null)
{
// Folder exists. Open it and load any existing files.
IReadOnlyList<StorageFile> files = await folder.GetFilesAsync();
// We now have the files. Do something with them.
}
else
{
// Folder does not exist. Create it.
folder.CreateFolderAsync("Folder Name", CreationCollisionOption.OpenIfExists);
}
但就在此,我想,为什么我不能这样做呢?
StorageFolder folder = await KnownFolders.DocumentsLibrary.CreateFolderAsync("Folder Name", CreationCollisionOption.OpenIfExists);
IReadOnlyList<StorageFile> files = await folder.GetFilesAsync();
if(files != null)
{
// We now have the files. Do something with them.
}
据我所知,我编写的第一个代码块是“标准”方式 - 或者更常见的方式。但由于第二种方式也有效,我现在不确定使用哪种方式。它们都有效,但是我有什么理由不这样做吗?
答案 0 :(得分:3)
第二块代码效果更好,为什么......?
试一试文件库中没有文件夹。
await KnownFolders.DocumentsLibrary.CreateFolderAsync("Folder Name", CreationCollisionOption.OpenIfExists);
如果不存在,CreationCollisionOption.OpenIfExists
将创建一个特定的文件夹。
在第一个代码块中,else块中的行永远不会调用。
folder.CreateFolderAsync("Folder Name", CreationCollisionOption.OpenIfExists);
如果您认为自己没有尝试打开的文件夹,则会引发异常System.IO.FileNotFoundException
...
http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.creationcollisionoption.ASPx