Может apache FileUtils.writeLines() либо добавить в файл, если он существует
общие пакета fileutils выглядят довольно круто, и я не могу поверить, что их нельзя добавить в файл.
File file = new File(path);
FileUtils.writeLines(file, printStats(new DateTime(), headerRequired));
выше просто заменяет содержимое файла каждый раз, и я просто хотел бы продолжать помечать этот материал, чтобы закончить так же, как этот код.
fw = new FileWriter(file, true);
try{
for(String line : printStats(new DateTime(), headerRequired)){
fw.write(line + "n");
}
}
finally{
fw.close();
}
Я искал javadoc, но ничего не нашел! Что я упускаю?
5 ответов
можно использовать IOUtils.writeLines(), он получает объект Writer, который вы можете инициализировать, как во втором примере.
их теперь метод, как appendString(...) в классе FileUtils.
но вы можете получить Outputstream от пакета fileutils.openOutputStream(...) и чем написать его с помощью
write(byte[] b, int off, int len)
вы можете вычислить off, так что вы будете apend к файлу.
редактировать
после прочтения ответа Davids я понял, что BufferedWriter сделает эту работу за вас
BufferedWriter output = new BufferedWriter(new FileWriter(simFile));
output.append(text);
начиная с Apache FileUtils 2.1 у вас есть этот метод:
статическая запись void (файл файла, данные CharSequence, логическое добавление)
существует перегрузка для FileUtils.writelines (), который принимает параметр для добавления.
public static void writeLines(File file,
Collection<?> lines,
boolean append)
throws IOException
file-файл для записи в
строки-строки для записи, нулевые записи создают пустые строки
append - если true, то строки будут добавляться в конец файла, а не перезаписывать
Вопрос 1:
FileUtils.writeLine(file_to_write, "line 1");
FileUtils.writeLine(file_to_write, "line 2");
file_to_write будет содержать только
line 2
как первая запись в один и тот же файл несколько times перезапишет файл.
Вопрос 2:
FileUtils.writeLine(file_to_write, "line 1");
FileUtils.writeLine(file_to_write, "line 2", true);
file_to_write будет содержать
line 1
line 2
второй вызов будет добавлен к тому же файлу.
проверьте это из официальной документации java для получения более подробной информации. https://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#writeLines(java.io.File, java.утиль.Коллекция, boolean)
вы могли бы сделать что-то вроде
List x = FileUtils.readLines(file);
x.add(String)
FileUtils.writelines(file,x);