将文件分发到多个文件夹而不是单个文件夹的原因

时间:2013-01-09 22:13:36

标签: java file directory

我正在审查用Java(一种内容交付服务器)编写的遗留应用程序的代码。它们有一个文件存储库,其中包含的文件都以其内容的MD5哈希十六进制命名。

7ABC1FBF6109EAB64DF6682158317181.dat

这些文件有数千个。存储库文件结构如下:

C:/base/resources/repository/{First two digits of hex MD5 hash}/{MD5 hash hex}.dat 

例如:

C:/base/resources/repository/7A/7ABC1FBF6109EAB64DF6682158317181.dat

有没有任何理由可以验证这样做,假设没有需要它的业务逻辑(我告诉你没有)。应用程序获取文件请求,并使用散列映射的文件中的内容进行响应。

我真的想不出任何事情。

应用程序在Linux机器上运行,我不知道它们使用的是哪个发行版或文件系统。

3 个答案:

答案 0 :(得分:1)

通过哈希的属性

{First two digits of hex MD5 hash}/{MD5 hash hex}.dat

毫无意义。在任何文件系统目录中,逻辑上应将事物组合在一起,但根据定义,共享相同前缀的两个散列项之间没有逻辑关系。我的猜测是有人厌倦了同时在目录中看到太多文件,所以这可能与性能有关。

答案 1 :(得分:1)

当单个目录包含大量文件时,某些文件系统调用会变得非常慢,尤其是在Windows上。管理它们也更难,因为只是简单地列出它们的内容太慢而且返回的条目太多了。

答案 2 :(得分:1)

文件管理工具之类的GUI工具可能会挂起,或者如果该文件夹也是远程的(NAS,SAMBA),可能需要花费很长时间才能简要地查看内容。当然,应用程序可以更好地按日期或其他不太随机的方式对文件进行分组。