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-15
int 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();
}
}