Pregunta

Tengo un archivo txt simple que guardará solo 1 palabra, pero cada vez que reinicio el programa todo dentro del data.txt se elimina, ¿no sé por qué?

Todo el código de clase:

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

public class InfoSaver {
    File data = new File("data.txt");
    FileOutputStream fos;
    PrintStream writer;
    FileInputStream fis;
    DataInputStream reader;
    public void init() throws IOException{
        fos = new FileOutputStream(data);
        writer = new PrintStream(fos);
        fis = new FileInputStream(data);
        reader = new DataInputStream(fis);

    }
    public void writeData(String info) {
        writer.println(info);

    }
    public String readData() throws IOException{
        return reader.readLine();
    }
    public void close() throws IOException{
        writer.close();
        reader.close();
    }
}
¿Fue útil?

Solución

No está agregando nueva información al archivo, lo está sobrescribiendo.

Cada vez que lo abras en el

fos = nuevo FileOutputStream (datos);

Comando, se vacía, no importa si ha guardado algo dentro o no.

Otros consejos

Para agregar a un archivo existente en lugar de sobrescribirlo, use el constructor de FileOutputStream que le permita abrirlo en modo de agregado.

fos = new FileOutputStream(data, true);

Por esta línea:

 fos = new FileOutputStream(data);

Esta versión del constructor de FileOutputStream superará el archivo, pero podría usar Esta versión:

public FileOutputStream(File file,
                        boolean append)
                 throws FileNotFoundException

Tendría que especificar que desea agregar al archivo configurando el append hacer true.

Su FileOutputStream está sobrescribiendo su archivo. Si desea agregar al final del archivo, debe especificar eso:

fos = new FileOutputStream(data, true);

Cuando te encuentras con un comportamiento inesperado, es una buena idea verificar la API para asegurar que las funciones que llamas estén haciendo lo que espera. Aquí está la API Para el FileOutputStream constructor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top