0

我想清理 winrt 中 storageFolder.RoamingFolder 中的所有文件,我可以删除单个文件,但是. 对如何解决这个问题没有任何想法?

4

2 回答 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 回答