在代表不同父位置的文件夹的 StorageFolder 对象上调用 DeleteAsync 时,我对它的行为感到有些困惑。如果我要删除的文件夹的父位置是例如本地应用程序数据文件夹,我可以删除文件夹,即使它们有内容(文件和子文件夹)。例如,如果父位置是文档库,如果文件夹不为空,我会收到异常“目录不为空。(来自 HRESULT 的异常:0x80070091)”。
我当然声明了访问文档库的能力,并在应用程序清单中声明了文件类型。为了证明访问这些文件(我的测试用例中的文本文件)有效,我的测试应用程序创建了文件夹并在其中创建了文本文件。该应用程序甚至可以从文件夹中删除单个文本文件。但是如果父文件夹是文档库,则不允许删除整个文件夹。
有人可以解释这种不同的行为吗?这可能与假设(我不确定)应用程序数据文件夹中的数据比其他数据(很可能是用户数据)更轻松地处理有关。这种假设的一个提示是,删除应用程序数据文件夹中的文件总是会永久删除它们,但在其他文件夹中删除则允许移动到回收站。
编辑: 这是我的测试应用程序:www.juergen-bayer.net/Downloads/FolderDeletionTest.zip