我想清理 winrt 中 storageFolder.RoamingFolder 中的所有文件,我可以删除单个文件,但是. 对如何解决这个问题没有任何想法?
问问题
1785 次
2 回答
3
如果删除文件夹的内容是您想要实现的递归方法,则如下所示:
public static async Task DeleteFolderContentsAsync(StorageFolder folder,
StorageDeleteOption option)
{
// Try to delete all files
var files = await folder.GetFilesAsync();
foreach (var file in files)
{
await file.DeleteAsync(option);
}
// Iterate through all subfolders
var subFolders = await folder.GetFoldersAsync();
foreach (var subFolder in subFolders)
{
// Delete the contents
await DeleteFolderContentsAsync(subFolder, option);
// Delete the subfolder
await subFolder.DeleteAsync(option);
}
}
于 2012-10-20T09:28:40.843 回答
0
对于现在遇到此问题的任何人,StorageFolder.GetItemsAsync
它会返回指定文件夹的所有文件和子文件夹,因此您可以将 Jürgen Bayers 的答案修改为如下所示:
public static async Task DeleteFolderContentsAsync(StorageFolder folder, StorageDeleteOption option)
{
var items = await folder.GetItemsAsync();
foreach (var item in items)
{
await item.DeleteAsync(option);
}
}
如果您不需要区分文件和文件夹,那么它会更短并且有效。
此外,删除文件夹也会删除其中的元素,因此您无需递归调用该方法。
于 2021-12-11T13:21:16.763 回答