Pregunta

Los bienes comunes FileUtils se ven muy bien, y no puedo creer que no se pueda hacer que se agreguen a un archivo.

File file = new File(path);
FileUtils.writeLines(file, printStats(new DateTime(), headerRequired));

Lo anterior simplemente reemplaza el contenido del archivo cada vez, y me gustaría seguir etiquetando estas cosas para que terminen tal como lo hace este código.

fw = new FileWriter(file, true);
try{
    for(String line : printStats(new DateTime(), headerRequired)){
        fw.write(line + "\n");
    }
}
finally{ 
    fw.close();
}

¡Busqué en el javadoc pero no encontré nada! ¿Qué me estoy perdiendo?

¿Fue útil?

Solución

Puede usar IOUtils.writeLines () , recibe un objeto Writer que puede inicializar como en su segundo ejemplo.

Otros consejos

Su método es ahora como appendString (...) en la clase FileUtils.

Pero puede obtener el Outputstream de FileUtils.openOutputStream (...) y luego escribirle usando

write(byte[] b, int off, int len) 

Puede calcular la desactivación, de modo que anexará el archivo.

EDIT

Después de leer la respuesta de Davids, reconocí que BufferedWriter hará este trabajo por usted

BufferedWriter output = new BufferedWriter(new FileWriter(simFile));
output.append(text);

A partir de apache FileUtils 2.1 tiene este método:

escritura vacía estática (archivo de archivo, datos de secuencia de caracteres, anexo booleano)

Hay una sobrecarga para FileUtils.writelines () que toma parámetros para agregar o no.

public static void writeLines(File file,
          Collection<?> lines,
          boolean append)
                   throws IOException

archivo: el archivo para escribir

líneas: las líneas para escribir, las entradas nulas producen líneas en blanco

append: si es verdadero, las líneas se agregarán al final del archivo en lugar de sobrescribirlas

Caso1:

FileUtils.writeLine(file_to_write, "line 1");
FileUtils.writeLine(file_to_write, "line 2");

file_to_write contendrá solo

line 2

Como escribir primero en el mismo archivo varias veces sobrescribirá el archivo.

Caso2:

FileUtils.writeLine(file_to_write, "line 1");
FileUtils.writeLine(file_to_write, "line 2", true);

file_to_write contendrá

line 1
line 2

La segunda llamada se agregará al mismo archivo.

Verifique esto en la documentación oficial de Java para obtener más detalles. https : //commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#writeLines (java.io.File , java.util.Collection, boolean)

podrías hacer algo como

List x = FileUtils.readLines(file);
x.add(String)
FileUtils.writelines(file,x);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top