Easy云盘总结篇-文件上传03

说在前面:此项目是跟着B站一位大佬学的,不分享源码,支持项目付费

文章目录

删除文件

这个逻辑是我觉得最复杂,很难理解的一部分。所以单独写一篇来理解。
首先理解,删除文件有两种情况:
1,第一次删除,指的是将这个文件删除后,进入回收站。
2,再次删除,是指将回收站里的文件彻底删除。
这篇写的是第一种,回收站部分的后续再写。

先说最简单的一种删除:删除一个文件
在这里插入图片描述
在这里插入图片描述
我们这个例子的文件情况如下:

文件1(已删除,进入回收站)
文件夹1

文件2
文件夹2(空)

主要关注我圈起来的这几个字段(
file_pid :父Id
folder_type:0是文件夹,1是文件
del_flag:0删除 1回收站 2使用中)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

看代码,很好理解,先查询是否有文件1这个文件,然后走到findAllSubFolderFileList这个方法,
在这里插入图片描述
将文件1的fileId添加进fileIdList,由于是文件1,它里面不包含文件夹(FOLDER),所以这里就不会进入递归查询,循环结束。最终delFilePidList里只包含文件1的fileId(5383484748),
注意,这里先是执行 updateFileDelFlagBatch(delFilePidList,null),将文件1的fileId(5383484748)传过去,在mapper里,执行寻找file_pid为(5383484748)的文件,将那些文件设为DEL(删除),实际上这里并没有子文件。
然后执行下面的 updateFileDelFlagBatch(null,delFileIdList)
这个就是来处理文件1了,将file_id为(5383484748),也就是将文件1设置为RECYLE(回收站)。结束。

在这里插入图片描述在这里插入图片描述

然后来看删除文件夹的情况!!!
在这里插入图片描述
在这里插入图片描述
这里删除文件夹1(里面还包含文件2和文件夹2),删除后,在回收站中,只能看到最外层也就是文件夹1,它里面的东西我们是无法点进去看的了。

首先进入findAllSubFolderFileList方法,先将文件夹1的file_id(8926786988)添加进fileIdList,然后这回是文件夹,List fileInfoList=fileInfoMapper.selectList(query)就找到文件夹1下的所有子文件夹(也就是文件夹2),然后再递归,将文件夹2的file_id(2006777512)添加进fileIdList。因为文件夹2下没有文件夹了,递归结束,delFilePidList里面就有文件夹1和它的子文件夹2的file_id。

然后就是走updateFileDelFlagBatch(delFilePidList,null),将file_pid为文件夹1和文件夹2的file_id的子文件(也就是文件2和文件夹2)状态更新为DEL(删除)。

最后走updateFileDelFlagBatch(null,delFileIdList),来处理文件夹1,将其状态设置为RECYLE(回收站),结束。

findAllSubFolderFileList:找该文件(夹)及其子文件夹。
updateFileDelFlagBatch(delFilePidList,null):更新子文件(夹)状态
updateFileDelFlagBatch(null,delFileIdList):更新选中文件(夹)状态

总的来说,就是将顶层文件(夹)设置为回收站,其底层子文件(夹)设置为删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LDM>W<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值