文件上传目录(哈希目录)

来源:互联网 发布:一战往事知乎 编辑:程序博客网 时间:2024/04/28 17:24

1.文件重名问题

UUID+"文件名"

2.目录问题

利用文件名的hashcode来创建目录

目录效果如下(每级是16个)


以下是例子

1.写个工具类

package cn.jwj.utils;import java.io.File;import java.util.UUID; public class FileUtils {public static String  makePath(String filename,String savepath){int hashcode=filename.hashCode();int dir1=hashcode&0xf;//生成一级目录取哈希码的后4为值范围:0-15int dir2=(hashcode&0xf0)>>4;//二级目录  可以根据需要多分级String path=savepath+"\\"+dir1+"\\"+dir2;File file=new File(path);if(!file.exists()){file.mkdirs();//创建目录}return dir1+"\\"+dir2+"";//返回分级目录路径(注意不是全路径)}public static String makeFilename(String filename){return UUID.randomUUID().toString()+"_"+filename;}2.保存文件(我用了struts2的文件上传)以下是保存文件的方法(异常暂不管)public void savelogo() {String path;String filename;try {path=FileUtils.makePath(this.getUploadFileName(), this.getSavePath());filename=FileUtils.makeFilename(this.getUploadFileName());user.setLogo(path+"\\"+filename);} catch (Exception e1) {e1.printStackTrace();}try {FileOutputStream fos = new FileOutputStream(this.getSavePath()+"\\"+user.getLogo());FileInputStream fins = new FileInputStream(this.getUpload());byte[] buffer = new byte[1024];int len = 0;while ((len = fins.read(buffer)) > 0) {fos.write(buffer, 0, len);}fosins.close();fos.close(); } catch (FileNotFoundException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} }




 


0 0
原创粉丝点击