开发者社区> 晨曦dawn> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java中如何创建一个确保唯一的名字,文件名

简介:     ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------     本篇博客要讲的有,如何创建一个唯一的文件名,创建一个唯一的String字符串 为什么要创建唯一呢?再很多情况下,比如文件上传,文件名要不一致,否则就覆盖掉了,如何不一致,这就是...
+关注继续查看

 

 

 

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

 

 

本篇博客要讲的有,如何创建一个唯一的文件名,创建一个唯一的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位甚至更多的随机数等

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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java创建线程
Java创建线程
11 0
java93-线程的创建方法二
java93-线程的创建方法二
9 0
java92-线程的创建方法一
java92-线程的创建方法一
15 0
Maven创建一个Servlet项目(五)下
Maven创建一个Servlet项目(五)
33 0
面试题-关于Java线程池一篇文章就够了
面试题-关于Java线程池一篇文章就够了
49 0
java中的线程池,这一篇就够了
java中的线程池,这一篇就够了java高并发系列第18篇文章。 本文主要内容什么是线程池线程池实现原理线程池中常见的各种队列自定义线程创建的工厂常见的饱和策略自定义饱和策略线程池中两种关闭方法有何不同扩展线程池合理地配置线程池线程池中线程数量的配置什么是线程池大家用jdbc操作过数据库应该知道,操作数据库需要和数据库建立连接,拿到连接之后才能操作数据库,用完之后销毁。
866 0
x3d
JavaScript中JSON的处理心得
一门语言用到深处,就避免不了要对数据的类型进行准确判断,并针对其类型做正确处理。 抛开在Web前端环境不谈,从一门独立编程语言的角度来看js,你就会感受到对js中数据类型的理解有多么重要。 禁止直接多级访问对象属性,必须一级一级访问;如abc.
699 0
Java 多线程断点下载文件_详解
基本原理:利用URLConnection获取要下载文件的长度、头部等相关信息,并设置响应的头部信息。并且通过URLConnection获取输入流,将文件分成指定的块,每一块单独开辟一个线程完成数据的读取、写入。
887 0
+关注
晨曦dawn
谦卑若愚,好学若饥,吾异无他,唯手熟尔! 一个不断追求完美的少年--晨曦Dawn
138
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载