上次采用了 V2 老哥的建议,设计了类似于文件夹的模型
当前的设计为存储 文件夹 /文件 全路径:
如:
/folder_1/folder_2/...
/folder_3/file_1
/folder_4/file_5
目前遇到的问题:(深层)文件夹复制的时候需要先找出子文件夹及其相关联的文件,再做分配,这样效率好低
希望得到 V2 大佬的建议,感谢 🙏
1
THESDZ 2020-10-27 15:57:02 +08:00
不太懂业务情况
但是如果是我设计,对外的路径只是一个假的,真实的路径是不会发生变化的 |
5
THESDZ 2020-10-27 16:04:46 +08:00 2
@SjwNo1 顺带,建议不要写什么大佬大佬的,你这样一架,那还有人敢进来啊,也就我这样没脸没皮的敢瞎 JB 指定江山,就请问各位,巴拉巴拉就行
|
6
kkbblzq 2020-10-27 16:04:56 +08:00
子目录本身不就是前缀一致的吗,有啥问题。。。直接左匹配不行吗。。
|
7
SjwNo1 OP @THESDZ 是的 我目前就是这样设计的,每个文件夹节点都有 parent_id, 但是当文件夹复制的时候,感觉仍然避免不了递归查找
|
10
kkbblzq 2020-10-27 16:22:08 +08:00 1
@SjwNo1 不是很了解你业务怎么样的,通过左前缀匹配不就可以找到所有文件和目录了。然后替换一下路径,换一下最顶层的父节点不就完事了。。
|
11
eason1874 2020-10-27 16:24:58 +08:00 1
实在不行用空间换时间呗,继续有 parent_id 表示上下级关系,再加一个字段 parent_path 表示上级位置。
比如,一级目录的上级路径为空,二级是 1,三级是 1/2,四级是 1/2/3,这些数字是上级目录 ID,文件跟目录一样,也有这个字段。 当你移动四级目录下的内容到三级的时候,就查找 parent_path=1/2/3,然后修改 parent_id=2,parent_path=1/2 随便想的,提供个思路,不一定靠谱。可以去下载几个有名的文件管理项目代码来看看他们怎么设计的,抄过来比较一下效率再决定怎么做。 |
12
sivacohan 2020-10-27 16:31:47 +08:00 via iPhone 1
复制没什么好办法,你肯定会对目录树做一个 BFS 或者 DFS 。
对应概念上可以参考深拷贝和浅拷贝。 |
13
SjwNo1 OP @eason1874 我现在的设计和你想的一模一样,只是复制不同于移动(剪切),移动只要修改左前缀和 parent_id,但是复制需要生成新的 文件夹和文件,整个 parent_path 都需要修改
谢谢老哥,我去查找一下 |
15
wellsc 2020-10-27 16:41:42 +08:00
我以为是操作系统的文件系统
|
19
SjwNo1 OP 别沉 ^ -^
|