zoukankan      html  css  js  c++  java
  • 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;
    	}
    }
    
  • 相关阅读:
    @RequestParam注解使用:Name for argument type [java.lang.String] not available, and parameter name information not found in class file either.
    cglib动态代理导致注解丢失问题及如何修改注解允许被继承
    springboot Autowired BeanNotOfRequiredTypeException
    git根据用户过滤提交记录
    不同包下,相同数据结构的两个类进行转换
    How to use Jackson to deserialise an array of objects
    jooq实践
    java如何寻找main函数对应的类
    Python--matplotlib
    Python 和 Scikit-Learn
  • 原文地址:https://www.cnblogs.com/gaoguofeng/p/9700887.html
Copyright © 2011-2022 走看看