根据文件名,随机分级保存文件

    用户上传的文件,保存在服务器本地。如果用户够多,那么用户通过上传操作,保存到服务器的文件也会越来越多。

    如果这些文件够多且只保存在一个文件夹里面的话,就会导致,文件夹打不开,甚至服务器崩溃。

    那么就需要小心的规划这些文件的保存位置,通常会给每个文件夹保存的文件设置一个上限。

    文件保存在什么位置,一般有两种方法。

    一种是:为每个用户单独的创建一个文件夹。然后再根据不同的文件生成不同文件夹。

    

    第二种是通过文件名32位的UUID随机生成8级数字目录,这样也能保证每个文件夹文件不会出现过多的现象。

    8级目录代码:

    String   name = UUIDUtil.getId();

    int   hashCode = name.hashCode();         //把32位的UUID字符串变成串二进制数。

    String  dir  =  "";

    for(int  i = 0;i  <  8;i++) {

      int  d  = hashCode & 0xf;                  //与上最大的16进制数,得到的就是最后4位的二进制,从而得到0~15的数

      dir  =  dir  + d  + "/";

      hashCode >>4;                               //二进制右移四位,刚好够移7次,得到8级目录

    }

            最后的dir就是一个8级目录地址。通常情况一般用不了8级,4级目录差不多够用了。

原文地址:https://www.cnblogs.com/shizhongyang/p/7102293.html