Escribir desde System.out.println a un archivo

Reemplacé muchas cadenas y saqué el resultado y ahora estoy tratando de escribir esas líneas en un archivo de texto. Esto es lo que hice. Creé un nuevo archivo:

File newfile = new File("/Users/Bill/Desktop/newfile.txt");
    if (newfile.exists()) {
        System.out.println("File exists");
    } else {
        newfile.createNewFile();
        System.out.println("New file created");

    }

Y luego intenté escribir en el archivo creado el resultado de System.out.println (líneas [i]);

    try {
    WriteToFile newFile = new WriteToFile(newfile, true);
    newFile.write(lines[i]); 
    // lines[i] is what I used to print out System.out.println(lines[i])  
    }

    catch (IOException e) {
        System.out.println("Error.");
    }

Sin embargo, no obtengo lo que esperaba. ¿Alguna sugerencia?

ARCHIVO DE ESCRITURA:

public class WriteToFile {
private String path;
private boolean append = false;

public WriteToFile(String filename) {
    path=filename;
}

public WriteToFile(String filename, boolean appendfile){
    path=filename;
    append=appendfile;
}

public void write(String text) throws IOException {
    FileWriter filewrite = new FileWriter(path, append);
    PrintWriter print = new PrintWriter(filewrite);

    print.printf("%s" + "%n", text);
    print.close();
}
}
Respuesta 1

Cada vez que llama WriteToFile.write, vuelve a abrir el archivo para escribir, truncando el contenido original del archivo. Debe abrir el archivo una vez, en el constructor (y almacenarlo PrintWriteren un campo), y agregar un closemétodo que requiera closeel PrintWriter.

En el lado de la llamada, haga esto:

WriteToFile writer = new WriteToFile(filename);
try {
    // writer.write(...);
} finally {
    writer.close();
}

Al tener la closellamada en un finallybloque, se asegura de que el archivo esté cerrado incluso si una excepción hace que la función se cierre antes.

Respuesta: 2

Mira el segundo argumento del FileWriterconstructor en tu código.

FileWriter filewrite = new FileWriter(path, append);

Mira, dice "agregar". Adivina lo que hace. Lea la documentación si no está seguro.

Ahora, mira cómo lo inicializaste append.

private boolean append = false;

Este código se comporta completamente como se esperaba. Es solo culpa del desarrollador. Arreglalo :)

Respuesta: 3

Estoy jugando con Maven y me preguntaba si puedo ejecutar mi programa usando el comando mvn desde una línea de comando o un eclipse. Puedo hacer una instalación limpia, pero no corro hasta ahora.

Estoy trabajando con una aplicación que usa JBPM 3.1 y MySQL. El problema central es que hay instancias de procesos con variables que contienen una versión anterior de un Serializable externo, no JBPM ...

Tengo un generador de código que genera clases con mucho código privado como: clase A {private void meth1 () {...} private int var1; clase privada SubA {privado voth meth2 () {...}}} ...

Tengo una entidad de Hibernate en mi código. buscaría eso y, según el valor de una de las propiedades, diga "isProcessed", continúe y: cambie el valor de "isProcessed" a "Yes" (la propiedad que ...