目录
前言:
本项目非原创,我也只是作为一名初学者跟着成熟的up主一起敲代码而已。视频来源于:
Springboot项目实战 easypan 仿百度网盘 计算机毕业设计 简历项目 项目经验(后端)_哔哩哔哩_bilibiliSpringboot项目实战 easypan 仿百度网盘 计算机毕业设计 简历项目 项目经验(后端)共计28条视频,包括:项目简介、项目架构、环境配置等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1qV4y1d7zY在哔哩哔哩闲逛看到这个项目,感觉还不错,于是想要学习一下这个项目怎么写。项目日记也会同步更新。(本人不分享本项目源码,支持项目付费)
本项目大量采用了先前项目中已经写好的代码,而且UP主讲的也很快。因此不适合新手作为自己的第一个项目。
今日完结任务:
1.创建目录:
新建文件夹的总体逻辑为:传递用户id和父级文件夹。然后在表中创建就可以
我们的文件和文件夹存放在一张表里面,就是之前说的file_info表。只不过我们添加了一个字段来标识当前列是文件还是文件夹
我们看看接口层:
接口层获取到用户信息之后,进入service层中,调用newFolder方法创建文件夹,整个newFolder可以分为三个板块
- 查询是否有同名文件夹
- 构造文件夹类,插入数据库
- 检查当前文件夹是否重名,如果重名就回滚
第一板块:
我们将其封装成为了一个方法,我们来看一看这个方法:
其实就是一个很简单的SQL语句。
第二板块:
在这一板块我们开始构造 文件夹类,并且将其插入到数据库中。
第三部分:
第三部分我们再次构造分页查询条件,检查该名称的文件夹在表中是否只有一个。
其实这里我们连续检查了两次是否存在同名,就是为了防止并发条件下多线程会创建相同名称的文件夹
2.文件重命名:
文件重命名也是可以分为三部分:
- 检查当前文件是否存在以及文件要更新的名称是否就是文件当前名称
- 构造文件类来在表中更新文件名称
- 检查是否有重名文件
第一部分:
书写拦截部分
第二部分:
构造fileinfo类,在表中更新文件名
第三部分:
检查是否有重名文件出现,如果有出现就抛出异常回滚。
3.移动文件
移动文件是指让文件或文件夹可以在不同的层级中移动。而移动文件的逻辑可以分为四部分
- 检查当前文件如何移动(自己不能移动到自己的文件夹里面),并且不能往已经被删除的文件夹中移动
- 检查当前待移动的文件夹或者文件是否与目标文件夹中的文件夹或文件命名重复。
- 如果发生重复的话,在重复的两个文件中选择一个重命名
- 更新待移动的文件夹或文件的父级文件夹
第一部分:
第二部分:
第三部分:
如果rootFileInfo不为空,也就是说出现同名文件了,那么我们调用rename方法重新设置一个文件,然后将其更新到updateInfo类中。
第四部分:
我们把待移动的文件或者文件夹的父级id更改为目标文件夹的id,
rename是我们自己写的一个方法,如果两个文件名重复,他会把一个文件重命名为原始文件名加上一个下划线和一个长度为5的随机字符串。
我们可以看一看这个方法的源码:
public static String rename(String fileName) {
String fileNameReal = getFileNameNoSuffix(fileName);
String suffix = getFileSuffix(fileName);
return fileNameReal + "_" + getRandomString(Constants.LENGTH_5) + suffix;
}
运行结果:
通过这样我们就实现了同名文件的重命名。
总结:
预计最迟五一假期结束之前写完这个项目,文件移动那块的逻辑太复杂了。写代码的时候差点累死我。这个项目写完之后要好好复习这个项目。
如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!