2016-12-17 1 views
-2

J'essaie de créer un fichier texte et d'y ajouter des détails en utilisant Java lorsqu'un bouton est cliqué dans mon application GUI, le nom du texte le fichier doit être la date et l'heure actuelles et l'emplacement du fichier texte doit être relatif. Voici l'extrait de code que j'ai utilisé pour le faire.Création d'un fichier texte avec la date et l'heure actuelles en tant que nom de fichier en 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); 
      } 
     } 

Malheureusement, quand je lance le code ci-dessus je reçois l'erreur suivante:

enter image description here

Je ne peux pas trouver le problème, s'il vous plaît me dire ce que je fais mal.

+0

Vous ne pouvez pas avoir des barres obliques ('/') dans votre nom de fichier – lordvlad

+0

J'ai essayé avec 'nouveau SimpleDateFormat (" aaaa-MM-jj_HH-mm-ss ");' mais j'obtiens toujours la même erreur. –

+0

@ lordvlad Je l'ai essayé maintenant et cela a fonctionné. Le format 'aaaa-MM-jj HH-mm-ss' fonctionne. Merci pour l'aide. –

Répondre

1

Deviner: soit

  1. votre système d'exploitation ne permet pas d'utiliser le caractère/dans les noms de fichiers
  2. ou il pense que/sépare les répertoires; en d'autres termes: vous essayez de créer un fichier dans un sous-répertoire ... qui n'existe probablement pas

Et sans rapport, mais important aussi: vous ne devriez pas mélange telles choses. Vous devriez mettre le code qui crée et écrit ce fichier en sa propre classe d'utilité; au lieu de le pousser dans votre code lié à l'interface utilisateur.

Vous voyez, si vous aviez créé une classe d'aide ici; il serait également plus facile de faire quelques tests unitaires sur celui-ci; pour s'assurer qu'il fait ce que vous attendez de faire.

+0

Merci de me l'avoir dit, j'ai changé le format de la date en "aaaa-MM-jj HH-mm-ss" et le programme fonctionne. –

+0

@MoizMansoorAli Content de l'entendre. Si c'est le cas, veuillez envisager d'accepter ma réponse (toujours possible, même pour les questions fermées). – GhostCat

0

Les systèmes de fichiers ont des limites quant aux caractères qui peuvent entrer dans les noms de fichiers. Par exemple, comme le dit @lordvlad, les barres obliques sont utilisées pour diviser entre les répertoires de succès. En outre, sous Windows, le : est utilisé pour séparer le nom du lecteur (c'est-à-dire C: \ ...).

+0

Ouais j'ai complètement oublié que le compilateur pourrait mal interpréter les symboles '/' et ':' comme un chemin de fichier au lieu du nom de fichier. Merci pour l'aide. –

+1

Ce n'est pas le compilateur. C'est le système de fichiers. Tous ont des règles sur ce que les noms de fichiers et les chemins sont autorisés à ressembler. – Fildor