IP地址加时间戳加3位随机数

工作中经常用到时间戳加上3位随机数获得唯一流水号,下面是代码~

package com.pb.viewer.filename;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * 在上传文件的操作中,如果多个用户上传的文件名称一样,则肯定会发生覆盖的
 * 情况,为了解决这个问题,可以采用为上传文件自动命名的方式
 * 自动命名采用的的文件格式如下:IP地址+时间戳+三位随机数
 * 
 * @author Voishion
 *
 */
public class IPTimeStamp {
    private SimpleDateFormat sdf = null;
    private String ip = null;
    private String filename = null;
    
    public IPTimeStamp() {
    }
    public IPTimeStamp(String ip, String filename) {
        this.ip = ip;
        this.filename = filename;
    }
    /**
     * 得到 IP地址+时间戳+三位随机数 的新文件名
     * @return
     */
    public String getIPTimeRandName(){
        StringBuffer buf = new StringBuffer();
        if(this.ip != null){
            String str[] = this.ip.split("\\.");
            for(int i = 0; i < str.length; i++){
                buf.append(this.addZero(str[i], 3));
            }
        }//加上IP地址
        buf.append(this.getTimeStamp());//加上日期
        Random random = new Random();
        for(int i = 0; i < 3; i++){
            buf.append(random.nextInt(10));//取三个随机数追加到StringBuffer
        }
        buf.append("."+this.getFileExt());//加上扩展名
        return buf.toString();
        
    }
    
    /**
     * 补0操作【如果不够指定位数,则在前面补0】
     * @param str
     * @param len
     * @return
     */
    private String addZero(String str,int len){
        StringBuffer s = new StringBuffer();
        s.append(str);
        while(s.length() < len){
            s.insert(0, "0");
        }
        return s.toString();        
    }
    
    /**
     * 取得时间戳
     * @return
     */
    private String getTimeStamp(){
        this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        return this.sdf.format(new Date());
    }
    
    /**
     * 获取文件扩展名
     * @return
     */
    private String getFileExt(){
        int i = this.filename.lastIndexOf(".");//返回最后一个点的位置 
        String extension = this.filename.substring(i+1);//取出扩展名
        return extension;
    }
}

猜你喜欢

转载自www.cnblogs.com/gaoguofeng/p/9700887.html
今日推荐