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位甚至更多的随机数等
就是自定义规则,让概率变得更小!!!!!!!!!
Java中如何创建一个确保唯一的名字,文件名的更多相关文章
- Java中如何创建一个新的对象的/Creating Objects/
The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't ...
- 什么是不可变对象(immutable object)?Java 中怎么 创建一个不可变对象?
不可变对象指对象一旦被创建,状态就不能再改变.任何修改都会创建一个新的对象,如 String.Integer 及其它包装类. 详情参见答案,一步一步指导你在 Java中创建一个不可变的类.
- JAVA中如何创建一个二维数组,然后给二维数组赋值!
普通的赋值是:int[][] i = {{1,2,3},{2,3,4},{1,3,4}}; 如果是其他情况可以这样:比如: import java.util.* public class TT(){ ...
- Java中如何创建进程(转)
在Java中,可以通过两种方式来创建进程,总共涉及到5个主要的类. 第一种方式是通过Runtime.exec()方法来创建一个进程,第二种方法是通过ProcessBuilder的start方法来创建进 ...
- Java中如何创建线程
Java中如何创建线程 两种方式:1)继承Thread类:2)实现Runnable接口. 1.继承Thread类 继承Thread类,重写run方法,在run方法中定义需要执行的任务. class M ...
- 在Java中如何设置一个定时任务,在每天的一个时间点自动执行一个特定的程序
Quartz定时机制 首先导入jar包到程序内 quartz-all-1.6.0.jar 然后创建一个XML TimeConfig.xml 名字可以自己定义 <?xml version=&quo ...
- Java 中能创建 volatile 数组吗?
能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不 是整个数组.我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护, 但是如果多个线程同时改变数 ...
- Java中直接输出一个类的对象
例如 package com.atguigu.java.fanshe; public class Person { String name; private int age; public Strin ...
- Java中如何查看一个类依赖的包
Java中如何查看一个类依赖的包 如图, 我如何知道JSONArray是依赖的哪一个包呢,这里有两个json-lib包? 测试语句: public static void main(Strin ...
随机推荐
- codeforces A. Supercentral Point 题解
版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
- php初学习
1.搭建环境:下载wamp5,然后下载安装,安装成功后在电脑的右下角会出现一个方向盘的图标,右键langage选择chinese,然后就可以用了
- 20155328 2016-2017-2 《Java程序设计》第九周学习总结
20155328 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 16.1 JDBC入门 JDBC是Java联机数据库的标准规范,定义一组标准类与接口,应用程 ...
- leaflet 中文API
LeafLet js 官网:http://leafletjs.com/index.html LeafLet js 官网demo: http://leafletjs.com/examples.html ...
- PAT——1057. 数零壹
给定一串长度不超过105的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0.多少1.例如给定字符串“PAT ...
- javaSE web开发 登录思路代码
准备工作: 1.在WebContent WEB-INF lib下添加c3p0-0.9.5.2.jar mchange-common-java-0.2.11.jar ojdbc6.ja ...
- java基础——回文数判断
/** * 题目描述: * 有这样一类数字,他们顺着看和倒着看是相同的数,例如:121,656,2332等,这样的数字就称为:回文数字.编写一个函数,判断某数字是否是回文数字. * 要求实现方法: * ...
- Linux文件描述符
在Linux通用I/O模型中,I/O操作系列函数(系统调用)都是围绕一个叫做文件描述符的整数展开.这不禁让人产生疑问:这个整数代表什么?一个数值代表一个文件吗?随便传一个整数进去调用可以吗? 原文地址 ...
- ios 开发UI篇— UIToolbar
前言 NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIToolbar : UIView <UIBarPositioning& ...
- CF451E Devu and Flowers(组合数)
题目描述 Devu想用花去装饰他的花园,他已经购买了n个箱子,第i个箱子有fi朵花,在同一个的箱子里的所有花是同种颜色的(所以它们没有任何其他特征).另外,不存在两个箱子中的花是相同颜色的. 现在De ...