2014-07-09 2 views
-2
static void goOut(String in) { 
        //instance variables 
    String fileCopy = currentLine +  in; 
    try { 
     FileWriter writer = new FileWriter(output,true); 


     writer.write(line1 + System.getProperty("line.separator", "\r\n")); 
     writer.write(fileCopy + System.getProperty("line.separator", "\r\n")); 


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

Le code a été modifié selon la norme correcte indiquée par les autres utilisateurs.Java écrit des lignes plusieurs fois?

+9

Pourquoi créer deux objets 'FileWriter' écrivant dans le même fichier en même temps? Cela ressemble à une recette pour un désastre. –

+0

Merci pour la réponse. J'ai essayé de résoudre le problème de cette façon, mais cela n'a pas fonctionné. Avec un FileWriter, cela ne fonctionne pas non plus. – Adz

+0

vous pouvez appeler l'écrivain à nouveau non? 'writer.write (fileCopy + System.get ....)', puis appelez 'writer.close();' –

Répondre

0

bien sûr parce que c'est ce que vous lui dites de faire. chaque fois qu'on l'appelle, il écrit x et le nombre. une solution rapide: vous pouvez conserver un drapeau si c'est la première fois que vous l'avez défini flag = true. et vérifier à l'intérieur ur méthode, STH comme ceci:

public class YourClass{ 

private boolean didRun = false; 

static void goOut(String in) { 

    ...... init ur file and writer 
    if(!didRun) 
     writer.write(Y); 

    writer.write(in); 
    writer.close(); 
    didRun = true; 
    } 
} 

Je ne sais pas le reste du code, mais je pense que c'est ce que u besoin

+0

Hmm j'ai fait ce que vous avez demandé par le y est jamais imprimé – Adz

+0

j'ai mis à jour la réponse avec peut-être un code plus lisible – eldjon

+0

Cela a fonctionné mais j'obtiens un java.io.IOException: Stream a fermé l'erreur . Cependant, il crée toujours le type de fichier correct:/ – Adz

0

Je crois que vous voulez séparer les tâches dont le «goOut» est responsable.

Vous devez faire "goOut" seulement écrire les chiffres (dans votre exemple).

L'écriture des y (dans votre exemple) ne doit pas être séparée de la méthode et appelée une seule fois, au début de l'écriture dans le fichier.

En outre, @Jon Skeet a raison sur les multiples FileWriters. Utilisez un, puisque c'est le même fichier.

0

D'accord, sonne comme une catastrophe.

Lorsque vous utilisez plusieurs auteurs pour accéder au fichier, je m'attends à obtenir des résultats imprévisibles.

Je ne pense pas qu'il existe une garantie que FileWriter1 achèverait la tâche avant FileWriter2.

En outre, la méthode n'est pas synchronisée.

Questions connexes