2016-11-26 1 views
0

Je fais une affectation et une partie de celle-ci je dois faire défiler un fichier texte et afficher des informations en fonction de certains termes de recherche que j'ai fait, mais après je dois éditer le document sur un les lignes que l'utilisateur accepter, mon code pour modifier le document est:Mise à jour du fichier texte en utilisant java

int y = null; 
PrintWriter write = new PrintWriter(fileName); 
if (confirmation.equals("Y")) { 
        System.out.println("What is your email to confirm your booking?"); 
        email = S.next(); 

        write.println(room + (" ") + roomB + (" ") + price + (" ") + pool + (" ") + lounge + (" ") + email); 
        y = 1; 
       } 

Qu'est-ce qui se passe après la fin il suffit d'écrire une ligne et supprimer le reste des données au lieu de simplement changer cette ligne.

+0

Je n'ai pas eu votre problème, vous essayez de changer tout le contenu ou juste la ligne indiquée? –

+0

Désolé pour la confusion, je suis juste en train d'essayer d'éditer une ligne, alors disons que la ligne est "577 single 36.00 true true" J'essaye d'éditer cette ligne pour qu'elle aboutisse à "577 single 36.00 true true emailAddress" mais en gardant le reste du document tel quel est – E97

+0

Si vous savez où ajouter du texte, vous pouvez essayer d'utiliser [PrintWriter.Append()] (http://docs.oracle.com/javase/7/docs/api/java/io/ PrintWriter.html # append (java.lang.CharSequence,% 20int,% 20int)) – Mat

Répondre

2

Je pense que votre problème est que println() ne se soucie pas de ce que vous avez dans le fichier. Il écrit simplement dans le flux, ce qui entraîne l'écrasement de votre contenu existant.

Si vous devez modifier une seule ligne, lisez le contenu du fichier existant, puis remplacez la ligne dans ce contenu, puis écrivez tout le contenu modifié dans le fichier.

Bien sûr, vous devez vous rappeler que si le fichier est volumineux, il peut être coûteux ou dangereux de lire tout le contenu à la fois, donc une optimisation peut être nécessaire.