2013-12-13 61 views
0

我正在編寫代碼來創建在日期中標記的每日.idx和.dat文件,因此今天的文件將被稱爲13-12-2013.dat - DD -MM-YYYY格式如何使用日曆對象爲任何日期的日期命名文件

這是我所做的代碼;

DateFormat df = new SimpleDateFormat("dd-MM-yyyy"); 
Date date = new Date(); 
File fileNameDat = new File(df.format(date) + ".dat"); 
File fileNameIdx = new File(df.format(date) + ".idx"); 

這打印出我希望

這是很好的,如果我要天天做文件的文件的正確名稱,我只是運行程序,它會創建的文件,我用正確的標題。但現在我必須在6個月前創建30天的文件,每個文件具有相同的名稱佈局。

我被推薦使用日曆類。我已經在使用日曆類將時間設置爲每天午夜開始生成數據。

我已經嘗試過目前爲止;

File fileNameDat = new File(cal.getTime() + ".dat"); 
File fileNameIdx = new File(cal.getTime() + ".idx"); 

並得到這個結果;

java.io.FileNotFoundException: Fri Dec 13 00:00:00 GMT 2013.dat (The filename, directory name, or volume label syntax is incorrect) 

任何想法如何將它設置爲以DD-MM-YYYY格式生成文件名?

+0

'當指定路徑名的文件不存在FileNotFoundException'被拋出。我認爲你也必須使用'createNewFile()'方法。 –

回答

2

你隱式做的是使用toString() - java.util.Date的方法。爲什麼不喜歡你的第一種方法?

File fileNameDat = new File(df.format(cal.getTime()) + ".dat"); 
File fileNameIdx = new File(df.format(cal.getTime()) + ".idx"); 
+0

在我看到你的答案之前,我只是想到了這一點,爲此歡呼 – Dan

-1

異常可能是由於您沒有初始化日曆變量。

Calendar cal =Calendar.getInstance(Locale.getDefault());

1

很容易在Joda-Time 2.3做。

我建議考慮YYYY-MM-DD格式,因爲它按字母順序排序。 Joda-Time包括內置的ISO 8601樣式格式。這種格式也使得以後更容易解析。並消除月份與日期的歧義。

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so. 
// import org.joda.time.*; 
// import org.joda.time.format.*; 

DateTime start = new DateTime(2013, 2, 1, 12, 15).withTimeAtStartOfDay(); 
for (int nthDay = 0; nthDay < 30; nthDay++) { 
    DateTime dateTime = start.plusDays(nthDay).withTimeAtStartOfDay(); 
    String fileName = ISODateTimeFormat.date().print(dateTime) + ".dat"; 
    //… create file in storage … 
    System.out.println("File # " + (nthDay + 1) + ": " + fileName); 
} 

如果你真的想在你的問題的格式...

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MM-YYYY"); 
DateTime start = new DateTime(2013, 2, 1, 12, 15).withTimeAtStartOfDay(); 
for (int nthDay = 0; nthDay < 30; nthDay++) { 
    DateTime dateTime = start.plusDays(nthDay).withTimeAtStartOfDay(); 
    String fileName = formatter.print(dateTime) + ".dat"; 
    //… create file in storage … 
    System.out.println("File # " + (nthDay + 1) + ": " + fileName); 
} 

當運行...

File # 1: 01-02-2013.dat 
File # 2: 02-02-2013.dat 
File # 3: 03-02-2013.dat 
File # 4: 04-02-2013.dat 
File # 5: 05-02-2013.dat 
File # 6: 06-02-2013.dat 
File # 7: 07-02-2013.dat 
File # 8: 08-02-2013.dat 
File # 9: 09-02-2013.dat 
File # 10: 10-02-2013.dat 
File # 11: 11-02-2013.dat 
File # 12: 12-02-2013.dat 
File # 13: 13-02-2013.dat 
File # 14: 14-02-2013.dat 
File # 15: 15-02-2013.dat 
File # 16: 16-02-2013.dat 
File # 17: 17-02-2013.dat 
File # 18: 18-02-2013.dat 
File # 19: 19-02-2013.dat 
File # 20: 20-02-2013.dat 
File # 21: 21-02-2013.dat 
File # 22: 22-02-2013.dat 
File # 23: 23-02-2013.dat 
File # 24: 24-02-2013.dat 
File # 25: 25-02-2013.dat 
File # 26: 26-02-2013.dat 
File # 27: 27-02-2013.dat 
File # 28: 28-02-2013.dat 
File # 29: 01-03-2013.dat 
File # 30: 02-03-2013.dat 
相關問題