当前位置: 首页 > java >正文

Easy云盘总结篇-回收站

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

文章目录

    • 文件列表
    • 恢复文件
    • 彻底删除

文件列表

在这里插入图片描述
在这里插入图片描述
这个逻辑没啥好说的,根据状态RECYLE在数据库里查询。

恢复文件

这个逻辑和之前的将文件添加进回收站的逻辑差不多就是相反的,前面懂了,这里就很好理解,可以先去看之前的文章:删除文件,再来看这节。
首先要清除,无论之前删的是哪一级的文件(夹),将它还原,就只能将它还原到根目录下,不可能说还原到原来的目录,那不符合常理。
然后就是还原的时候还要考虑到根目录下是否有重名文件(夹),要进行重命名

先说最简单的,恢复一个文件
在这里插入图片描述
这里恢复文件1。
在这里插入图片描述

这里因为是文件1,直接绕过for到下面。然后就先用Map装了所有根目录(file_pid=0)的文件(夹)
走到updateFileDelFlagBatch(null, delFileIdList) 这,将文件1状态更新为USING(使用中),然后再处理是否重命名问题。

再来说还原文件夹1:
这里fileInfoList只装有文件夹1,然后进入for循环里的递归,将文件夹1下的所有子文件夹(也就是文件夹2,状态为DEL)装进delFileSubFolderFileIdList里。
然后走updateFileDelFlagBatch(delFileSubFolderFileIdList, null),将file_pid为文件夹1和文件夹2的file_id的文件(也就是文件2和文件夹2)状态更新为USING(使用中),但是他们的其他就不再变化,父Id仍然是文件1的file_id。
在这里插入图片描述
然后就是处理选中的文件夹1,将它的父id设置为根目录(filePid=0),
updateFileDelFlagBatch(null, delFileIdList),将文件夹1状态设置为USING,最后处理重命名问题,结束。

总的来说,先将子文件(夹)(原状态为DEL)设置为USING,再来将选中文件(夹)(原状态为RECYLE)设置成USING,并更改其file_pid=0

彻底删除

在这里插入图片描述
其实和前面删除文件的逻辑类似,可以先看这个:删除文件,再来看这个,就很好理解了。
在这里插入图片描述

先说彻底删除一个文件
直接走到delFileBatch(null,Arrays.asList(fileIdArray)),将文件1删除
在这里插入图片描述
在这里插入图片描述

如果是彻底删除一个文件夹1
先找到文件夹1及其子文件夹(文件夹2),
delFileBatch(delFileSubFileFolderIdList,null),将父id为文件夹1和文件夹2的file_id并且原状态为DEL(删除)的子文件(夹),也就是文件2和文件夹2删除,
最后
走**delFileBatch(null,Arrays.asList(fileIdArray))**将文件夹1删除。

这回的删除就不再是更改状态,而是从数据库里删除,所以还要更新空间使用
在这里插入图片描述

http://www.xdnf.cn/news/4035.html

相关文章:

  • 组合两个表 --- MySQL [Leetcode 题目详解]
  • 备战全国信息素养大赛 图形化挑战赛——约数和
  • “公共类 XXX 应该在文件中出现”错误怎么查找解决
  • 项目管理学习-CSPM(1)
  • MCP与API集成的最佳实践:高效连接,智能驱动
  • 谈判模拟器 - Gemini 2.5 商业优化版
  • JGQ626Ⅲ数据采集旋风除尘与袋式除尘组合实验装置
  • 【漫话机器学习系列】241.典型丢弃概率(Typical Dropout Probabilities)
  • EF Core 中,AsEnumerable 和 AsQueryable 的区别
  • 算法题(139):牛可乐和魔法封印
  • BUUCTF——Mark loves cat
  • 在Window10 和 Ubuntu 24.04LTS 上 Ollama 在线或离线安装部署
  • 嵌入式操作系统
  • 剥开 MP4 的 千层 “数字洋葱”:从外到内拆解通用媒体容器的核心
  • Vue3从入门到精通
  • GJOI 4.29 题解
  • 利用 Python pyttsx3实现文字转语音(TTS)
  • 9.进程控制(上)
  • linux 历史记录命令
  • Python爬虫(18)反爬攻防战:动态IP池构建与代理IP实战指南(突破95%反爬封禁率)
  • 全局过滤器与局部过滤器: Vue中的文本格式化工具
  • Python中的JSON库,详细介绍与代码示例
  • STC单片机与淘晶驰串口屏通讯例程之01【新建HDMI工程】
  • 计算机视觉与深度学习 | 图像匹配算法综述
  • Spring Boot 加载application.properties或application.yml配置文件的位置顺序。
  • Qwen3 性价比新王 Qwen3-30B-A3B 本地私有化部署,可灵活切换思考模式
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(九)
  • Qml组件之AnimatedImage
  • 牛客1018逆序数-归并排序
  • 从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 5 |地图匹配与轻量 SLAM:HMM/Viterbi 与简化图优化