2014-04-18 6 views
0

j'ai écrit un très simple morceau de code, il fonctionnait parfaitement depuis hier, mais maintenant ne fonctionne pas et même après beaucoup de recherche/débogage Je n'ai pas la questionécriture dans un fichier texte en java

import java.net.InetAddress; 
import java.util.Date; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.BufferedWriter; 

    public class DetectLoggedInUser{ 

    public static void returnUserName() 
    { 
    String computerName; 
    try { 


    File file =new File("d:\\TestFolder\\UsersloggedIn.txt"); 

     if(!file.exists()){ 
      file.createNewFile(); 
     } 


      FileWriter fileWritter = new FileWriter(file.getName(),true); 
       BufferedWriter bufferWritter = new BufferedWriter(fileWritter); 
      String content= "\n UserName="+System.getProperty("user.name")+ " || Date and Time= "+new Date(); 
      bufferWritter.write(content); 
      bufferWritter.close(); 

} 

catch(Exception ex) { 
ex.printStackTrace(); 
} 
} 

public static void main(String args[]) 
{ 
returnUserName(); 
} 
} 

Maintenant, le fichier est créé mais rien n'est écrit dans le fichier

Y a-t-il un problème avec ce code (en gardant à l'esprit que cela fonctionnait depuis hier)?

+1

Passez simplement 'file' au constructeur' FileWriter'. – stevecross

Répondre

1

Essayez ceci:

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.util.Date; 

public class DetectLoggedInUser { 

    public static void returnUserName() { 
     try { 
      File file = new File("d:\\TestFolder\\UsersloggedIn.txt"); 

      if (!file.exists()) { 
       file.createNewFile(); 
      } 

      FileWriter fileWritter = new FileWriter(file, true); 
      BufferedWriter bufferWritter = new BufferedWriter(fileWritter); 
      String content = "\n UserName=" + System.getProperty("user.name") 
        + " || Date and Time= " + new Date(); 
      bufferWritter.write(content); 
      bufferWritter.close(); 

     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 

    public static void main(String args[]) { 
     returnUserName(); 
    } 
} 
+0

Merci pour la suggestion "Il suffit de passer le fichier au constructeur FileWriter." .... Cela fonctionne. Mais je suis incapable de comprendre pourquoi est-ce le cas, pourquoi "file.getName()" a soudainement cessé de fonctionner? si vous pouviez m'éclairer s'il vous plaît. –

+0

Je ne crois pas que cela ait jamais fonctionné. 'file.getName()' renvoie "UsersloggedIn.txt" dans votre cas. C'est un chemin relatif à ce fichier dans le répertoire courant. Si vous exécutez le programme dans le même répertoire, cela devrait fonctionner avec 'getName()'. – stevecross

0

Vous n'avez pas besoin de vérifier si les fichiers existent ou non, à côté que cela fonctionne bien pour moi.

+1

vérification est essentielle, il est nécessaire, en fait cette condition vérifie si le fichier n'existe pas alors le fichier creat, puis écris dedans, s'il existe alors il suffit de l'ajouter.Il n'a rien à voir avec l'écriture. de toute façon mon code fonctionne bien maintenant j'ai passé "fichier" au lieu de "file.getName()" dans le constructeur. Ypou peut aussi essayer ça. –

+0

Ok, merci. Je pensais juste que 'FileWriter' le vérifie automatiquement. – eliasah

1

Vous pouvez utiliser

FileWriter fileWritter = new FileWriter(file.getAbsolutePath(), true); 

Au lieu de file.getName() dans votre méthode code.File.getName() retourne uniquement le nom du fichier ou du répertoire, et non le chemin absolu;

Questions connexes