Guardar datos en java

Buenas Tardes.

Tengo un método para guardar un archivo, éste recibe como parámetro el nombre del archivo y la cadena a guardar. El método lo mando a llamar dentro del método run() de la interfaz Runnable(). El problema que tengo es que al ejecutar el hilo, sólo se guarda una sola línea, ya intenté ponerle el newLine() y el append() pero no me funciona, los he movido de lugar pero tampoco funciona. Este es mi código.

public void guardarListas(String ruta, String cadena ) throws IOException{     
        File archivo = new File(ruta);
        BufferedWriter bw;
        if(archivo.exists()) {
            bw = new BufferedWriter(new FileWriter(archivo));
            bw.write(cadena + "\n");
            bw.append("----------------");
        } else {
            bw = new BufferedWriter(new FileWriter(archivo));
            bw.write(cadena);
            bw.newLine();
        }
        bw.close();    
        }

Como les decía, sólo guarda la primera palabra. El programa debe analizar una expresión regular, las cadenas son leídas desde un archivo de texto y valida si las cadenas son válidas o no y las separa conforme su clasificación. El hilo lo utilizo para que se vea la forma en que analiza cada caracter de la cadena. Tengo un método similar a éste, el cual se ejecuta al presionar la tecla ESC, pero ese sí funciona. No se que estoy haciendo mal, la idea es que cada vez que entre una nueva cadena la guarde en el archivo como una nueva línea.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

append en vez de write

¿Y si pruebas con bw.append(cadena); en vez de bw.write(cadena);?

Guardar datos en Java

Bueno, ya entregué el programa, aunque tuve que hacer cuanto truco para que quedara como yo quería, al final funcionó. Pero ahora este programa voy a modificarlo a fin de dibujar el autómata finito para una expresión dada. No se como a mi profesor se le ocurren estas cosas. Ahora ando en eso. Gracias por responder. Saludos.