¿Se puede hacer que apache FileUtils.writeLines () se agregue a un archivo si existe
-
06-07-2019 - |
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?
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);