Probleme cu filewriter suprascrierea fișierelor în loc de a adăuga la sfârșitul

OK, am probleme cu scrierea mai multor rânduri într-un fișier text.

programul rulează, dar nu va folosi linii noi de fiecare dată

când vreau să ruleze de 4 ori, fișierul text ar trebui să arate ca:

a
b
c
d

în schimb, se pare că:

d

cine știe cum să remedieze această problemă? toate importurile sunt importate corect.

sursă (a fost ușor editată, presupunem că totul este bine definit):

import java.io.*;
public class Compiler {
public static void main (String args[]) throws IOException
{
    //there's lots of code here
    BufferedWriter outStream= new BufferedWriter(new FileWriter("output.txt"));
    outStream.newLine();
    outStream.write(output);
    outStream.close();
}

}
7
Doar un avertisment, dar acest lucru este periculos de aproape de o întrebare "care este codul". Cu toate acestea, din moment ce nu ați cerut doar ajutor (ați arătat ce ați făcut până acum), voi pune un ochi la ochi.
adăugat autor Jonathan Pitre, sursa

3 răspunsuri

Asigurați-vă că atunci când creați o instanță a unui FileWriter , pe care îl adăugați până la sfârșitul acestuia. Acest lucru se poate face folosind acest constructor specific FileWriter care ia un boolean suplimentar ca al doilea parametru. Acest cod boolean indică FileWriter să atașeze la sfârșitul fișierului, mai degrabă decât să suprascrie fișierul.

BufferedWriter outStream= new BufferedWriter(new FileWriter("encoded.txt", true));
17
adăugat
Sunt un pic nou pentru intrările și ieșirile de java, așadar aș putea obține un exemplu? Nu sunt în locul ideal pentru testare chiar acum (nu există JDK sau IDE pe această stație de lucru)
adăugat autor Azulflame, sursa
Am scris asta când nu era cod în el. Multumesc pentru raspuns.
adăugat autor Azulflame, sursa
Răspunsul meu oferă deja modificările pe care ar trebui să le aplicați pentru a face acest lucru.
adăugat autor nicholas.hauschild, sursa

By default FileWriter will overwrite the file. What you might want to do is define the reader in the following manner:
new FileWriter("encoded.txt", true)
This way the file will be appended to instead of being overwritten.

Hope this helps!

2
adăugat

Nu sunt sigur ce ar trebui să facă acest cod. Aceasta aruncă o eroare dacă șirul de intrare are mai mult de un caractere, deoarece închideți FileWriter-ul în bucla, apoi încercați să îl scrieți din nou.

Vă interpret întrebarea în felul următor: vă întrebați de ce numai cea mai recentă ieșire este în fișier. În acest caz, este pentru că nu ați creat aplicația FileWriter în modul de adăugare. Uitați-vă la diferitele constructori disponibile pentru FileWriter și utilizați unul care vă permite să adăugați la fișier.

0
adăugat