欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java利用時間格式生成唯一文件名的方法

 更新時間:2017年01月17日 15:18:59   作者:張飛_  
這篇文章主要介紹了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中通過時間格式來生成唯一文件名的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關文章

  • Kafka常用命令之kafka-console-consumer.sh解讀

    Kafka常用命令之kafka-console-consumer.sh解讀

    這篇文章主要介紹了Kafka常用命令之kafka-console-consumer.sh解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java中RabbitMQ消息隊列的交換機詳解

    Java中RabbitMQ消息隊列的交換機詳解

    這篇文章主要介紹了Java中的RabbitMQ交換機詳解,消息隊列是指利用高效可靠的消息傳遞機制進行與平臺無關的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進行分布式系統(tǒng)的集成,是在消息的傳輸過程中保存消息的容器,需要的朋友可以參考下
    2023-07-07
  • spring啟動錯誤Singleton bean creation not allowed while the singletons of this factory are indestruction

    spring啟動錯誤Singleton bean creation not al

    本文主要介紹了spring啟動錯誤Singleton bean creation not allowed while the singletons of this factory are indestruction,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • springboot + mybatis-plus實現(xiàn)多表聯(lián)合查詢功能(注解方式)

    springboot + mybatis-plus實現(xiàn)多表聯(lián)合查詢功能(注解方式)

    這篇文章主要介紹了springboot + mybatis-plus實現(xiàn)多表聯(lián)合查詢功能,是最簡單的一種注解方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • JAVA算法起步之插入排序實例

    JAVA算法起步之插入排序實例

    這篇文章主要介紹了JAVA算法起步之插入排序實例,需要的朋友可以參考下
    2014-02-02
  • 淺談java安全編碼指南之堆污染

    淺談java安全編碼指南之堆污染

    什么是堆污染呢?是指當參數(shù)化類型變量引用的對象不是該參數(shù)化類型的對象時而發(fā)生的。我們知道在JDK5中,引入了泛型的概念,在創(chuàng)建集合類的時候,指定該集合類中應該存儲的對象類型。如果在指定類型的集合中,引用了不同的類型,那么這種情況就叫做堆污染。
    2021-06-06
  • SpringBoot自定義定時任務的實現(xiàn)示例

    SpringBoot自定義定時任務的實現(xiàn)示例

    本文主要介紹了SpringBoot自定義定時任務,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-05-05
  • SpringBoot接口如何統(tǒng)一異常處理

    SpringBoot接口如何統(tǒng)一異常處理

    這篇文章主要介紹了SpringBoot接口如何統(tǒng)一異常處理,SpringBoot接口如何對異常進行統(tǒng)一封裝,并統(tǒng)一返回呢?以下文的參數(shù)校驗為例,如何優(yōu)雅的將參數(shù)校驗的錯誤信息統(tǒng)一處理并封裝返回呢,感興趣的下下伙伴可以一同參考一下
    2022-07-07
  • Java實現(xiàn)WebSocket四個步驟

    Java實現(xiàn)WebSocket四個步驟

    這篇文章主要為大家介紹了Java實現(xiàn)WebSocket的方法實例,只需要簡單四個步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Spring?AOP實現(xiàn)多數(shù)據(jù)源動態(tài)切換

    Spring?AOP實現(xiàn)多數(shù)據(jù)源動態(tài)切換

    本文主要介紹了Spring?AOP實現(xiàn)多數(shù)據(jù)源動態(tài)切換,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論