有时候我们需要截图,在要截图时,有人用到了时间格式,但是时间格式中的:在文件名称中是不被允许的字符,所以就会报错,如何生成唯一的时间文件名:

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中通过时间格式来生成唯一的文件名的更多相关文章

  1. java中各种时间格式的转化

    http://www.chinaitpower.com/A/2005-01-14/104881.html 使用java.util.Calendar返回间隔天数         static int g ...

  2. JAVA中Sql时间格式与util时间格式转换

    关于时间格式转化: java.util.Date 与 java.sql.Date 互换 sql是子类 字符串转化成java.util.Date     SimpleDateFormat date =n ...

  3. Java 中自定义时间格式

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date d = new Date(); String s ...

  4. 1 Java中的时间类型

    总结:sql中的时间转 util的时间直接赋值即可:反过来,必须先吧util下的时间转换成毫秒,再通过sql的构造器生成sql的时间格式. 1 Java中的时间类型 java.sql包下给出三个与数据 ...

  5. Java json设置时间格式,Jackson设置时间格式,json设置单引号

    Java json设置时间格式,Jackson设置时间格式,json设置单引号 >>>>>>>>>>>>>>> ...

  6. JAVA中的时间操作

    java中的时间操作不外乎这四种情况: 1.获取当前时间 2.获取某个时间的某种格式 3.设置时间 4.时间的运算 好,下面就针对这四种情况,一个一个搞定. 一.获取当前时间 有两种方式可以获得,第一 ...

  7. Java中日期时间API小结

    Java中为处理日期和时间提供了大量的API,确实有把一件简单的事情搞复杂的嫌疑,各种类:Date Time Timestamp Calendar...,但是如果能够看到时间处理的本质就可以轻松hol ...

  8. JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson

    java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...

  9. Java中的时间日期处理

    程序就是输入——>处理——>输出.对数据的处理是程序员需要着重注意的地方,快速.高效的对数据进行处理时我们的追求.其中,时间日期的处理又尤为重要和平凡,此次,我将把Java中的时间日期处理 ...

随机推荐

  1. kotlin 插件更新到 1.2.41 程序出错 Please use kotlin-stdlib-jdk7 instead

    buildscript { ext.kotlin_version = '1.2.41' repositories { google() jcenter() } dependencies { class ...

  2. POJ 1742 Coins 【多重背包DP】

    题意:有n种面额的硬币.面额.个数分别为A_i.C_i,求最多能搭配出几种不超过m的金额? 思路:dp[j]就是总数为j的价值是否已经有了这种方法,如果现在没有,那么我们就一个个硬币去尝试直到有,这种 ...

  3. 洛谷 p1044 栈 【Catalan(卡特兰数)】【经典题】

    题目链接:https://www.luogu.org/problemnew/show/P1044 转载于:https://www.luogu.org/blog/QiXingZhi/solution-p ...

  4. ubuntu TensorFlow安装

    Tensorflow安装确实比caffe简单... cuda,cudnn安装就不说了 1 安裝pip(有就跳过) sudo apt-get install python-pip python-dev ...

  5. Linux学习之ACL权限详解(十)

    Linux系统ACL权限详解 目录 ACL权限简介与开启 查看与设定ACL权限 最大有效权限与删除ACL权限 默认ACL权限和递归ACL权限 ACL权限简介与开启权限 ACL权限简介 用户权限管理始终 ...

  6. 多线程出现 java.lang.NumberFormatException: multiple points

    多线程下导入数据,发现同一个文件每次导入成功的数据量都不一致,经检查,某些数据偶尔会报错  java.lang.NumberFormatException: multiple points 原因是导入 ...

  7. 用postcss cli运行postcss

    一.验证autoprefixer插件1.新建项目 新建文件夹postcss: 在postcss目录中,新建package.json文件,新建css文件夹: 在css文件夹新建outfile.css,i ...

  8. 图解 Java 内存模型

    图解 Java 内存模型 (图片来自于:http://www.cnblogs.com/zhangs1986/p/7903722.html)

  9. 4513: [Sdoi2016]储能表 数位DP

    国际惯例的题面: 听说这题的正解是找什么规律,数位DP是暴力......好的,我就写暴力了QAQ.我们令f[i][la][lb][lc]表示二进制从高到低考虑位数为i(最低位为1),是否顶n上界,是否 ...

  10. PHP函数 ------ ctype_alnum

    //判断是否是字母和数字或字母数字的组合 if(!ctype_alnum($str)){ echo '只能是字母或数字的组合';exit; }整理下ctype functions: 1.ctype_a ...