我正在使用Cloud Files API创建一个虚拟文件系统。我试图实现重命名/移动和删除文件夹的操作。重命名带有覆盖场景的文件夹(当目标文件夹存在时)行为令人困惑。在Windows explore中,我试图将Z:Folder1重命名为Z:Folder2,而Z:Folder2已经存在。在执行重命名操作之前,源文件夹正在通过调用CF_CALLBACK_TYPE_NOTIFY_DELETE回调被删除。
以下是我使用云过滤器API获得的回调序列:
- 在源文件夹上调用CF_CALLBACK_TYPE_NOTIFY_DELETE
- 每个文件从源文件夹被移动到目标文件夹
- 在源文件夹上调用CF_CALLBACK_TYPE_NOTIFY_DELETE_COMPLETION。
因此,无法在CF_CALLBACK_TYPE_NOTIFY_DELETE回调中删除存储中的文件夹,因为这将在移动操作之前删除所有文件。也没有办法区分CF_CALLBACK_TYPE_NOTIFY_DELETE内部的删除和移动操作(所以我可以忽略它的移动操作)。
如何在云文件API中正确实现删除和重命名/移动回调?
这是Windows文件管理器特有的。我试着"搬家"。使用PowerShell进行"move - item"操作;与"-Force"选项,我得到了下一个回调序列(没有删除回调):
- CF_CALLBACK_TYPE_NOTIFY_RENAME
- CF_CALLBACK_TYPE_NOTIFY_RENAME_COMPLETION