2016-12-17 50 views
-2

我想創建一個文本文件並在Java應用程序中單擊按鈕時使用Java添加一些細節,文本的名稱文件必須是當前日期和時間,文本文件的位置必須是相對的。這是我用來做到這一點的代碼片段。用當前日期和時間創建一個文本文件作爲Java中的文件名

 public void actionPerformed(ActionEvent e){ 
      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd_HH:mm:ss"); 
      Date date = new Date(); 
      String fileName = dateFormat.format(date) + ".txt"; 
      File file = new File(fileName); 
      PrintWriter pw; 
      try{ 
       if(file.createNewFile()){ 
        pw = new PrintWriter(file); 

        //Write Details To Created Text File Here 

        JOptionPane.showMessageDialog(null, "The Statistics have successfully been saved to the file: " 
          + fileName); 
       }else{ 
        JOptionPane.showMessageDialog(null, "The save file " + fileName 
          + " already exists, please try again in a while."); 
       } 
      }catch(IOException exception){ 
       JOptionPane.showMessageDialog(null, exception + ", file name:- " + fileName); 
      }catch(Exception exception){ 
       JOptionPane.showMessageDialog(null, exception); 
      } 
     } 

不幸的是,當我運行上面的代碼中,我得到以下錯誤:

enter image description here

我不能發現問題,請告訴我,我做錯了。

+0

你不能在你的文件名中使用斜槓('/') – lordvlad

+0

我試過'新的SimpleDateFormat(「yyyy-MM-dd_HH-mm-ss」);'但我仍然收到同樣的錯誤。 –

+0

@lordvlad我現在試過了,它工作。格式'yyyy-MM-dd HH-mm-ss'工作。謝謝您的幫助。 –

回答

1

猜測:要麼

  1. 操作系統不允許在文件名中使用/字符
  2. 也認爲/分隔目錄;換句話說:你要創建一個子目錄文件...這可能不存在

和無關,但也很重要:你不應該混合這樣的事情。您應該將創建該代碼並將該文件寫入自己的實用程序類的代碼;而不是將其推入到與UI相關的代碼中。

你看,如果你在這裏創建了一個輔助類;它也會是很多更容易做一些單元測試;以確保它做到你期望的事情。

+0

感謝您告訴我這一點,我將日期格式更改爲'yyyy-MM-dd HH-mm-ss',程序正常運行。 –

+0

@MoizMansoorAli很高興聽到這個消息。如果是這樣,請考慮接受我的答案然後(即使是封閉的問題,仍然可能)。 – GhostCat

0

文件系統對文件名可以使用什麼字符有限制。例如,正如@lordvlad所說,斜線用於在成功目錄之間進行劃分。另外,在Windows中,:用於分隔驅動器名稱(即C:\ ...)。

+0

是的,我完全忘了編譯器可能會錯誤地將'/'和':'符號解釋爲文件路徑而不是文件名。謝謝您的幫助。 –

+1

它不是編譯器。這是文件系統。所有這些都有規則允許文件名和路徑的樣子。 – Fildor

相關問題