根据文件名,随机分级保存文件
用户上传的文件,保存在服务器本地。如果用户够多,那么用户通过上传操作,保存到服务器的文件也会越来越多。
如果这些文件够多且只保存在一个文件夹里面的话,就会导致,文件夹打不开,甚至服务器崩溃。
那么就需要小心的规划这些文件的保存位置,通常会给每个文件夹保存的文件设置一个上限。
文件保存在什么位置,一般有两种方法。
一种是:为每个用户单独的创建一个文件夹。然后再根据不同的文件生成不同文件夹。
第二种是通过文件名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级目录差不多够用了。