JAVA中通过时间格式来生成唯一的文件名
有时候我们需要截图,在要截图时,有人用到了时间格式,但是时间格式中的:在文件名称中是不被允许的字符,所以就会报错,如何生成唯一的时间文件名:
package com.demo; import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar; public class TimeString { private String valueOfString(String str, int len) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < len - str.length(); i++) {
sb.append("0");
}
return (sb.length() == 0) ? (str) : (sb.toString() + str);
} public String getDateFormat(){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return df.format(new Date());
} public Date getDateFormat(String time){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
return df.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
} private String getTimeString(Calendar calendar) {
StringBuffer sb = new StringBuffer();
sb.append(String.valueOf(calendar.get(Calendar.YEAR)))
.append(this.valueOfString(String.valueOf(calendar.get(Calendar.MONTH) + 1),2))
.append(this.valueOfString(String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)),2))
.append(this.valueOfString(String.valueOf(calendar.get(Calendar.HOUR_OF_DAY)),2))
.append(this.valueOfString(String.valueOf(calendar.get(Calendar.MINUTE)),2))
.append(this.valueOfString(String.valueOf(calendar.get(Calendar.SECOND)),2))
.append(this.valueOfString(String.valueOf(calendar.get(Calendar.MILLISECOND)),3));
return sb.toString();
} public String getTimeString(String time){
Calendar calendar = new GregorianCalendar();
calendar.setTime(this.getDateFormat(time));
return this.getTimeString(calendar);
} public String getTimeString(){
Calendar calendar = new GregorianCalendar();
return this.getTimeString(calendar);
} public static void main(String[] args) {
TimeString ts = new TimeString();
System.out.println(ts.getTimeString());
System.out.println(ts.getTimeString("2015-4-30 8:51:52"));
}
}
虽然上面的getTimeString方法精确到了毫秒,但仍会有可能产生相同的文件名,导致覆盖,所以,在生成文件名时判断一下是否存在:
package com.demo; import java.io.File; public class Test16 { public String getFileName(String path){
File file = new File(path);
if(file.exists()){
return this.getFileName(file.getParent()+File.separator+(new TimeString().getTimeString())+".png");
}
return path;
} public static void main(String[] args) {
Test16 t = new Test16();
System.out.println(t.getFileName("D:/1.txt"));
} }
理论上来说,这种也是有可能产生相同的文件名的,这种在多线程中是有可能的,解决的办法很简单,自已想去!
JAVA中通过时间格式来生成唯一的文件名的更多相关文章
- java中各种时间格式的转化
http://www.chinaitpower.com/A/2005-01-14/104881.html 使用java.util.Calendar返回间隔天数 static int g ...
- JAVA中Sql时间格式与util时间格式转换
关于时间格式转化: java.util.Date 与 java.sql.Date 互换 sql是子类 字符串转化成java.util.Date SimpleDateFormat date =n ...
- Java 中自定义时间格式
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date d = new Date(); String s ...
- 1 Java中的时间类型
总结:sql中的时间转 util的时间直接赋值即可:反过来,必须先吧util下的时间转换成毫秒,再通过sql的构造器生成sql的时间格式. 1 Java中的时间类型 java.sql包下给出三个与数据 ...
- Java json设置时间格式,Jackson设置时间格式,json设置单引号
Java json设置时间格式,Jackson设置时间格式,json设置单引号 >>>>>>>>>>>>>>> ...
- JAVA中的时间操作
java中的时间操作不外乎这四种情况: 1.获取当前时间 2.获取某个时间的某种格式 3.设置时间 4.时间的运算 好,下面就针对这四种情况,一个一个搞定. 一.获取当前时间 有两种方式可以获得,第一 ...
- Java中日期时间API小结
Java中为处理日期和时间提供了大量的API,确实有把一件简单的事情搞复杂的嫌疑,各种类:Date Time Timestamp Calendar...,但是如果能够看到时间处理的本质就可以轻松hol ...
- JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson
java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...
- Java中的时间日期处理
程序就是输入——>处理——>输出.对数据的处理是程序员需要着重注意的地方,快速.高效的对数据进行处理时我们的追求.其中,时间日期的处理又尤为重要和平凡,此次,我将把Java中的时间日期处理 ...
随机推荐
- k8s 使用
转自:https://blog.csdn.net/zyc88888/article/details/79281954
- Scrapy爬虫学习笔记 - windows \ linux下搭建开发环境2
四.虚拟环境的安装和配置 virtualenv可以搭建虚拟且独立的python运行环境, 使得单个项目的运行环境与其它项目独立起来. virtualenv本质上是个python包 虚拟环境可以将开发环 ...
- 各种浏览器下的页面元素xpath获取方法
参考链接: http://blog.sina.com.cn/s/blog_654c6ec70100v1i2.html
- android和java以太坊开发区块链应用使用web3j类库
如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建.钱包创建.交易转账,交易与状态.智能合约开发与交互.过滤器和 ...
- 在phpstorm中svn的使用
目 录 1.搭建svn环境 1.1搭建svn服务端 1.2创建svn用户和密码 2.开始在phpstorm中链接svn 2.1打开Subversion 2.2 输入svn地址 2.3选择导出文件,进 ...
- web漏洞扫描工具AWVS使用
AWVS AWVS简介:Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞,如交叉站点脚 ...
- 由自定义事件到vue数据响应
前言 除了大家经常提到的自定义事件之外,浏览器本身也支持我们自定义事件,我们常说的自定义事件一般用于项目中的一些通知机制.最近正好看到了这部分,就一起看了下自定义事件不同的实现,以及vue数据响应的基 ...
- BZOJ 4552 [Tjoi2016&Heoi2016]排序 线段树的分裂和合并
https://www.lydsy.com/JudgeOnline/problem.php?id=4552 https://blog.csdn.net/zawedx/article/details/5 ...
- [BZOJ3080]Minimum Variance Spanning Tree/[BZOJ3754]Tree之最小方差树
[BZOJ3080]Minimum Variance Spanning Tree/[BZOJ3754]Tree之最小方差树 题目大意: 给定一个\(n(n\le50)\)个点,\(m(m\le1000 ...
- [NOIp2012提高组]同余方程
OJ题号: 洛谷1082 思路: 逆元模板. #include<cstdio> #include<cctype> inline int getint() { char ch; ...