2012-06-18 47 views
2

您好,我正在嘗試在JAVA文件名中添加日期和時間。我可以得到打印在文件中的日期和時間,我也希望這樣做,但是當我將toString放在FileWriter中時,我得到一個空指針。將日期和時間添加到文件名

package com.mkyong; 
import java.util.*; 
import java.io.*; 
import java.*; 
import java.util.Date; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 

    public class Simplex { 

     private static PrintWriter outFile; 

     //Main Method 
     public static void main(String[] args) throws IOException { 



      // Instantiate a Date object 
      Date date = new Date(); 

      // display time and date using toString() 
      outFile.println(date.toString()); 
      outFile.println(); 
      //creates the new file to be saved 


      outFile = new PrintWriter(new FileWriter("simplex" + (date.toString()) + ".txt")); 

回答

5

outFile = new PrintWriter(..)應該在第一次使用outFile之前發生。

基本上你在初始化之前使用outFile。

+0

啊謝謝。但是當我重新排序時,編譯器仍然不喜歡這一行: outFile = new PrintWriter(new FileWriter(「simplex」+(date.toString())+「.txt」)); – Paul

+0

試着在date = new Date()語句後面加上那一行 –

0
// display time and date using toString() 
outFile.println(date.toString()); 

通過代碼,您可以在初始化之前使用outFile

0

只需將其保存在一個變量中。你應該使用新的Date(long)構造函數,順便說一句。

public class Simplex { 

    private static PrintWriter outFile; 

    //Main Method 
    public static void main(String[] args) throws IOException { 



     // Instantiate a Date object 
     Date date = new Date(System.currentTimeMillis()); 
     String dateString = date.toString(); 


     outFile = new PrintWriter(new FileWriter("simplex" + dateString + ".txt")); 


     outFile.println(dateString); 
     outFile.println(); 
     //creates the new file to be saved 
2

我建議你使用的文件名格式YYYY-MM-dd_hh-mm-ss模式,讓您將文件整理更方便易方式。看看SimpleDateFormat課。

... 
    Format formatter = new SimpleDateFormat("YYYY-MM-dd_hh-mm-ss"); 
    outFile = new PrintWriter(new FileWriter("simplex_" + formatter.format(date) + ".txt")) 
    ... 
0

問題是,outFile被聲明爲靜態,但從未初始化,直到您已經使用它。

您需要先初始化/實際使用之前首先實例不過outFile:

private static PrintWriter outFile; 

    //Main Method 
    public static void main(String[] args) throws IOException { 

     // Instantiate a Date object 
     Date date = new Date(); 

     //creates the new file to be saved 
     outFile = new PrintWriter(new FileWriter("simplex" + (date.toString()) + .txt")); 
     // display time and date using toString() 
     outFile.println(date.toString()); 
     outFile.println(); 

雖然我不完全知道爲什麼你甚至創建不過outFile作爲一個靜態的對象,而不僅僅是一個局部變量。

5

如果使用Java 8

DateTimeFormatter timeStampPattern = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); 
     System.out.println(timeStampPattern.format(java.time.LocalDateTime.now())); 
+2

我建議總是將'ZoneId'對象傳遞給'now()'方法。如果省略,則應用JVM的當前默認時區。該默認值可能有所不同最好明確指定預期的/期望的區域。 –

0

下面提到的片斷可以

String logFileName = new SimpleDateFormat("yyyyMMddHHmm'.txt'").format(new Date()); 

logFileName = "loggerFile_" + logFileName; 
相關問題