2015-03-11 1 views
0

Lien vers le code entier: http://pastebin.com/Y0FA7zuGécrivain Buffered dans une boucle crée des lignes vides dans le fichier txt

Mon code:

public void dadUpdateFunction(ArrayList<JTextArea> texts) 
{ 
    try{ 
    //Specify the file name and path here 
    File file =new File("C:\\Users\\Karan\\Documents\\dadTXT.txt"); 

    /* This logic is to create the file if the 
    * file is not already present 
    */ 
    if(!file.exists()){ 
     file.createNewFile(); 
    } 

    //Here true is to append the content to file 
    FileWriter fw = new FileWriter(file,true); 

    //BufferedWriter writer give better performance 
    BufferedWriter bw = new BufferedWriter(fw); 
    String content = "Karan"; 
    int i= 0; 

    for(i= 0; i<texts.size(); i++) 
    { 
     content = (texts.get(i).getText()); 
     if(i!=0) 
     bw.newLine(); 

     if(i>0) 
     texts.get(i-1).setEditable(false); 
    } 

    bw.write(content + "\n"); 
    //Closing BufferedWriter Stream 
    bw.close(); 

    System.out.println("Data successfully appended at the end of file"); 

    }catch(IOException ioe){ 
    System.out.println("Exception occurred:"); 
    } 
} 

J'ai donc une arraylist de JTextArea. Dans mon programme, un utilisateur peut écrire dans JTextArea, puis cliquer sur ce bouton de mise à jour, et le texte écrit dans la dernière boîte JTextArea est ajouté à un fichier txt. Cependant, la sortie que je reçois dans mon fichier txt est sortie comme ceci: http://pastebin.com/fijFQKZi

Je ne veux pas les lignes vides entre les nombres, car cela chamboule mon lecteur tamponné plus tard. Pourquoi ajoute-t-il ces lignes vides?

Comment résoudre ce problème? Je suis nouveau ici, donc si je n'ai pas écrit quelque chose correctement, faites le moi savoir. T

Merci!

+0

S'il vous plaît formater votre code bien (à savoir avec indentation cohérente). À l'heure actuelle, il semble que vous ne puissiez pas prendre la peine de poser une bonne question, ce qui rend beaucoup moins enclins à vous aider. –

+0

Si une réponse est correcte, veuillez l'accepter. –

+0

Oui désolé ne savait pas faire cela. Fait maintenant je pense. J'ai un autre problème avec mon code, puis-je vous envoyer un message ou vous envoyer un e-mail? Si vous avez le temps d'aider bien sur :) –

Répondre

0

Si vous voulez que le dernier contenu JTextArea et pas newLine, vous devez supprimer

if(i!=0) 
    bw.newLine(); 

qui ajoutent une nouvelle ligne pour chaque JTextArea supplémentaire.

Maintenant, si cela est vraiment ce que vous voulez, vous pouvez factoriser comme ceci:

content = texts.get(texts.size()-1).getText(); // get only the last one 
bw.write(content + "\n"); // write last content 
for(int i= 0; i<texts.size(); i++) 
{ 
    texts.get(i).setEditable(false); 
} 
+0

Oui! Je viens de déplacer le bw.netLine(); En dehors de la boucle. Le seul problème est maintenant que j'ai la première ligne étant vide dans le fichier txt. Je pense que je peux réparer ça. Je vous remercie! –

1

Cela me rend confus à bien des égards. Dans votre boucle, vous donnez constamment une nouvelle valeur à content sans rien faire jusqu'à la fin de la boucle. Pendant ce temps, vous écrivez des sauts de ligne dans le tampon sauf pour la première fois (cette partie a du sens). Je pense que vous devez déplacer bw.write (contenu) dans votre boucle et l'enlever après la boucle.

for(i=0; i<texts.size(); i++) 
{ 
    if(i!=0) { 
     bw.newLine(); 
    } 
    bw.write(texts.get(i).getText()); 
    if(i>0) {  
     texts.get(i-1).setEditable(false); 
    } 
} 
bw.close();