java利用时间格式生成唯一文件名的方法

发布时间 - 2026-01-10 22:35:32    点击率:

前言

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

示例代码

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  # 生成唯一文件名  # ava  # 生成文件名  # 生成唯一字符串  # java批量修改文件名的实现方法  # java基于Apache FTP实现文件上传、下载、修改文件名、删除  # Java批量修改文件名的实例代码  # Java实现读取文件夹下(包括子目录)所有文件的文件名  # java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径  # java 文件名截取方法  # java字符串切割实例学习(获取文件名)  # 利用Java获取文件名、类名、方法名和行号的方法小结  # JavaWeb利用struts实现文件下载时改变文件名称  # Java获取文件夹下所有文件名称的方法示例  # Java实现简单修改文件名的方法分析  # 就会  # 会有  # 是有  # 有可能  # 很简单  # 想去  # 不被  # 报错  # 理论上  # 但仍  # 多线程  # 是否存在  # 有人用  # 有疑问  # str  # append  # sb  # valueOfString  # length  # StringBuffer 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高端网站建设与定制开发一站式解决方案 中企动力  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  *服务器网站为何频现安全漏洞?  lovemo网页版地址 lovemo官网手机登录  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  动图在线制作网站有哪些,滑动动图图集怎么做?  微信小程序 HTTPS报错整理常见问题及解决方案  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  javascript读取文本节点方法小结  JavaScript如何操作视频_媒体API怎么控制播放  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  Java遍历集合的三种方式  如何在万网主机上快速搭建网站?  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  如何在Windows服务器上快速搭建网站?  利用vue写todolist单页应用  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何获取免费开源的自助建站系统源码?  如何正确选择百度移动适配建站域名?  如何确保FTP站点访问权限与数据传输安全?  Linux系统命令中tree命令详解  Laravel如何自定义错误页面(404, 500)?(代码示例)  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  简单实现jsp分页  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  如何在服务器上配置二级域名建站?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Laravel观察者模式如何使用_Laravel Model Observer配置  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  android nfc常用标签读取总结  php485函数参数是什么意思_php485各参数详细说明【介绍】  如何在IIS中新建站点并配置端口与IP地址?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  简历在线制作网站免费版,如何创建个人简历?  使用C语言编写圣诞表白程序  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何在景安服务器上快速搭建个人网站?  魔方云NAT建站如何实现端口转发?  Laravel PHP版本要求一览_Laravel各版本环境要求对照  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Laravel如何配置Horizon来管理队列?(安装和使用)  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  佛山网站制作系统,佛山企业变更地址网上办理步骤?  微信推文制作网站有哪些,怎么做微信推文,急?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Laravel怎么使用Intervention Image库处理图片上传和缩放