2016-02-06 1 views
0

Donc, j'écris un code qui fonctionne comme un système de fichiers pour un système de connexion deux comptes sont pré-ajoutés, les deux étant des administrateurs. ils peuvent créer des comptes. Tous les comptes sont stockés dans une liste de tableau pour leur nom d'utilisateur, et une liste de tableau pour leur mot de passe. J'essaye de faire en sorte que quand j'exporte cette application, quand un administrateur ajoute à la liste de tableau, envoie les informations à un fichier txt, de sorte que la prochaine fois que le programme est exécuté, le programme chargera tous les comptes sur le fichier txt. J'ai testé le chargement des comptes, et cela fonctionne bien, mais je n'arrive pas à écrire dans un fichier txt. Je pris ce code dans cette méthode de ce site, mais je ne suis pas sûr de ce que je fais mal:BufferedWriter ne fonctionne pas

public static void writeFileContnet(){ 
    String path = "C:\\Users\\DJANDEK\\Desktop\\LogInPro\\info.txt"; 
    BufferedWriter writer = null; 

    try { 
     writer = new BufferedWriter(new FileWriter(path, true)); 
     if(!loadFileAsString(path).equals("")){ 
      writer.newLine(); 
     } 
     System.out.println(Account.accounts.get(Account.accounts.size()-1)); 
     writer.write(Account.accounts.get(Account.accounts.size()-1)); 

     System.out.println(breaker); 
     writer.write(breaker); 

     System.out.println(Account.passwords.get(Account.passwords.size()-1)); 
     writer.write(Account.passwords.get(Account.passwords.size()-1)); 

     writer.write(breaker); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    BufferedReader in = null; 
    try { 
     in = new BufferedReader(new FileReader(path)); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    String line; 
    try { 
     while((line = in.readLine()) != null) 
     { 
      System.out.println("it prints this"); 
      System.out.println(line); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     in.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 

juste pour ceux qui se demandent sur les années println, les écrans de la console: Bob; 1Q2W; BobsPass (l'information est correcte). Je ne reçois aucune erreur dans la console. Pour répondre à la question en double, on lui a dit d'utiliser un fichier, pas comment utiliser le fichier. Si j'ai déjà des données sur le fichier txt, le Reader lira et le fera.

+0

Copie possible de [Comment une application peut-elle utiliser les fichiers du JAR pour lire et écrire?] (Http://stackoverflow.com/questions/5052311/how-can-an-app-use-files-inside-the -jar-pour-lire-et-écrire) –

Répondre

0

Vous ne pouvez pas écrire dans un fichier à l'intérieur de votre pot. Vous devrez indiquer le chemin d'accès à un fichier sur le système de fichiers.

+0

Ok, je n'étais pas sûr mais j'ai pensé que ce serait un problème. J'ai essayé cela avant, mais pour une raison quelconque, le chemin ne fonctionnait pas correctement. J'ai essayé ce chemin: C: \\ Users \\ DJANDEK \\ Desktop \\ LogInPro \\ info.txt mais cela n'a pas semblé fonctionner. Dois-je faire quelque chose à propos du chemin absolu? – Deek3117

+0

J'ai corrigé le problème de cheminement (je ne dois pas pouvoir épeler parce que ça marche bien maintenant), mais ça ne semble toujours pas l'écrire. Si j'ai du texte dans le fichier, il le lit toujours, mais aucun texte supplémentaire ne semble être ajouté. – Deek3117

+0

@Deek, il y avait une autre erreur - vous ne fermiez pas le BufferedWriter. J'ai ajouté une deuxième réponse pour cela. –

0

Même lorsque vous modifiez l'utilisation d'un fichier dans le système de fichiers plutôt que dans le fichier jar, il n'écrit toujours pas dans le fichier car vous ne fermez pas le BufferedWriter.

Vous pouvez le fermer explicitement, comme vous le faites pour BufferedReader. Ou mieux encore, vous pouvez utiliser try-with-resources.

+0

Cela a fonctionné! Merci pour l'aide, je vais quand même donner un coup d'oeil à votre lien :) – Deek3117