当前位置 : 主页 > 编程语言 > java >

目录结构hash算法打散

来源:互联网 收集:自由互联 发布时间:2021-06-28
gistfile1.txt /** * @Method: makeFileName * @Description: 生成上传文件的文件名,文件名以:uuid+"_"+文件的原始名称 * @param filename 文件的原始名称 * @return uuid+"_"+文件的原始名称 */ private String make
gistfile1.txt
/**
	 * @Method: makeFileName
	 * @Description: 生成上传文件的文件名,文件名以:uuid+"_"+文件的原始名称
	 * @param filename 文件的原始名称
	 * @return uuid+"_"+文件的原始名称
	 */ 
	private String makeFileName(String filename){  //2.jpg
		System.out.println("uploadmethod makeFileName");
		//为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
		return UUID.randomUUID().toString() + "_" + filename;
	}


	/**
	 * 为防止一个目录下面出现太多文件,要使用hash算法打散存储
	 * @Method: makePath
	 * @Description: 
	 * @param filename 文件名,要根据文件名生成存储目录
	 * @param savePath 文件存储路径	
	 * @return 新的存储目录
	 */ 
	private String makePath(String filename,String savePath){
		System.out.println(" uploadmethod makePath");
		//得到文件名的hashCode的值,得到的就是filename这个字符串对象在内存中的地址
		int hashcode = filename.hashCode();
		int dir1 = hashcode&0xf;  //0--15
		int dir2 = (hashcode&0xf0)>>4;  //0-15
		//构造新的保存目录
		String dir = savePath + "/" + dir1 + "/" + dir2;  //upload\2\3  upload\3\5

		//File既可以代表文件也可以代表目录
		File file = new File(dir);
		//如果目录不存在
		if(!file.exists()){
			//创建目录
			file.mkdirs();
		}
		return dir;
	}
}
网友评论