2012-05-29 10 views
7

OK, tengo problemas para escribir varias líneas en un archivo de texto.Problema con el sobreescritura de archivos en lugar de agregarlo al final

el programa se ejecuta, pero no va a utilizar las nuevas líneas cada vez

cuando quiero correr 4 veces, el archivo de texto debe verse como:

a 
b 
c 
d 

lugar, que parece:

d 

¿Quién sabe cómo solucionar este problema? todas las importaciones se importan correctamente.

fuente (que ha sido ligeramente editado, asumir que todo está bien definido):

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(); 
} 

} 
+1

Solo una advertencia, pero esto es peligrosamente parecido a la pregunta "¿cuál es el código?". Sin embargo, como no simplemente pediste ayuda (ya mostraste lo que has hecho hasta ahora), haré la vista gorda. –

Respuesta

15

Asegúrese de que cuando se crea una instancia de un FileWriter, que está anexando al final de la misma. Esto se puede hacer usando this specific FileWriter constructor que toma un boolean adicional como un segundo parámetro. Este boolean le dice al FileWriter que se agregue al final del archivo, en lugar de sobrescribir el archivo.

BufferedWriter outStream= new BufferedWriter(new FileWriter("encoded.txt", true)); 
+0

Soy un poco nuevo en las entradas y salidas de Java, así que ¿podría darme un ejemplo? No estoy en el lugar ideal para probar en este momento (no hay JDK o IDE en esta estación de trabajo) – Azulflame

+1

Mi respuesta ya proporciona los cambios que debe aplicar para que esto funcione. –

+0

Escribí eso cuando no había ningún código en él. Gracias por la respuesta. – Azulflame

2

De forma predeterminada, FileWriter sobrescribirá el archivo. Lo que es posible que desee hacer es definir el lector de la siguiente manera:
new FileWriter("encoded.txt", true)
De esta manera el archivo será adjunta al en lugar de ser sobrescrito .

Espero que esto ayude!

0

No estoy seguro de qué se supone que debe hacer este código. Arroja un error si su cadena de entrada tiene más de un carácter, porque cierra su FileWriter dentro del ciclo, y luego intenta escribir de nuevo.

Estoy interpretando su pregunta de la siguiente manera: se pregunta por qué solo el resultado más reciente está en el archivo. En ese caso, es porque no creó su FileWriter en modo de adición. Mire los diferentes constructores disponibles para FileWriter, y use el que le permite agregar al archivo.

Cuestiones relacionadas