zoukankan      html  css  js  c++  java
  • Java中如何创建一个确保唯一的名字,文件名

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

    本篇博客要讲的有,如何创建一个唯一的文件名,创建一个唯一的String字符串

    为什么要创建唯一呢?再很多情况下,比如文件上传文件名要不一致否则就覆盖掉了,如何不一致,这就是本篇博客要讲的内容

    注:直接采用随机数是愚蠢的做法,它在很大概率上会有相同的数字出现

    方式一:时间戳

      推荐指数:

      原因:时间戳在高并发情况下有可能会出现相同

      解决方案:再拼随机数,注意拼接的时候别让俩个做加法运算      时间戳变量+""+随机数变量

            //时间戳第一种
            System.out.println(new Date().getTime());
            //时间戳第二种
            System.out.println(System.currentTimeMillis());

      随机数

            //生成六位随机数
            System.out.println((int)((Math.random()*9+1)*100000));

    方式二:微秒数

      推荐指数:

      原因:它比时间戳还要细,控制的力度更强

      也可以加随机数或者自己拼接自己的规则

            //微秒数
            System.out.println(System.nanoTime());

    方式三:UUID

      推荐指数:

      原因:他是java.util包下的一个可以产生不同的字符变量的一个类,它的功能很强大

            //采用UUID的方式                    import java.util.UUID;
            UUID randomUUID = UUID.randomUUID();
            System.out.println(randomUUID);

    方式四:在前三种基础上自定义规则

      推荐指数:

      原因:在日常中上面三种都足以满足自己的小Demo,小项目使用,但是在成熟大项目中,或许有些不够看,所以,我讲第四种

      思路:文件名不是一个字符串嘛,做拼接的三面三种方式任意一种的时候可以自己加入自己的规则,比如上传者的id,比如你从那块上传的解释,甚至加入8位甚至更多的随机数等

      就是自定义规则,让概率变得更小!!!!!!!!!

  • 相关阅读:
    VIJOS-P1340 拯救ice-cream(广搜+优先级队列)
    uva 11754 Code Feat
    uva11426 GCD Extreme(II)
    uvalive 4119 Always an Interger
    POJ 1442 Black Box 优先队列
    2014上海网络赛 HDU 5053 the Sum of Cube
    uvalive 4795 Paperweight
    uvalive 4589 Asteroids
    uvalive 4973 Ardenia
    DP——数字游戏
  • 原文地址:https://www.cnblogs.com/DawnCHENXI/p/9308941.html
Copyright © 2011-2022 走看看